"잘못된 부동 소수점 연산"오류 메시지에 문제가 있습니다. 팝업 메뉴는 디자인 타임 컨트롤이고 이름은 NavPop
입니다. 메뉴 항목이 할당되어 있지 않습니다. Panel1
에 대한 팝업 메뉴로 지정됩니다.델파이 비동기식으로 생성 된 팝업 메뉴 항목 - 잘못된 포인터 연산/액세스 위반
그런 다음 목록 상자에서 메뉴 항목을 동적으로 만들고 캡션 및 클릭 이벤트를 할당합니다. 모든 것은 내가 성취하려고 노력하는 관점에서 100 % 작동합니다. 즉 작동합니다. Addrss 0000007355.
의액세스 위반 주소 000007355. 읽기 : 내가 프로그램을 닫을 때
만, 내가
잘못된 부동 소수점 연산
또는 기타를받을 수 있나요
프로그램을 닫을 때의 오류를 제외하고는 모든 것이 완벽하게 작동한다는 점에 유의하십시오. 나는 어떤 도움을 주셔서 감사합니다.
// I declare the Array of TMenuItems
private
{ Private declarations }
ItemArray : array of TMenuItem;
...
procedure TMainForm.Button1Click(Sender: TObject);
begin
CreateNavPop;
end;
// Create the menu items from listbox(Navlist) items and Link them
// to events on a navigation bar.
procedure TMainForm.CreateNavPop;
var
I: Integer;
NavIndex: Integer;
begin
SetLength(ItemArray, NavList.Items.Count);
NavIndex:=0;
For I:=0 to NavList.Items.Count-1 do
begin
NavIndex:=NavBar1.Items.ItemByCaption(NavList.Items.Strings[i]).Index;
ItemArray[i]:=TMenuItem.create(Nil);
ItemArray[i].Caption:=NavList.Items.Strings[i];
ItemArray[i].OnClick:=NavBar1.Items.Items[Navindex].OnClick;
NavPop.Items.Add(ItemArray[i]);
end;
end;
// Call the Items free on program close
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeItems(ItemArray);
end;
// Free Dynamically created Menu Items on Form Close
procedure TMainForm.FreeItems(MItems : array of TMenuItem);
var
cnt : integer;
begin
for cnt := High(MItems) downto Low(MItems) do
begin
MItems[cnt].Free;
MItems[cnt] := nil;
end;
end;
생성자에서'TMenuItem'의 소유자를 할당하면 안됩니까? 지금 그것을 'nil'으로 설정하고 있습니다. – Pateman
TMenuItems의 목록을 유지하는 것이 중요합니까? Pateman이 말했듯이 생성자 (navpop)에서 소유자를 지정하는 것만으로 충분합니다. –
예제를 보려면 [TPopUp 메뉴에 동적으로 항목을 추가하는 방법 (사용자 정의 속성 보관 방법)] (http://delphi.about.com/od/kbcurt/a/dynamicmenuitem.htm)을 참조하십시오. 프로그램을 디버깅하려면 여기에 제안 된대로 디버그 옵션과 함께 FastMM을 사용하십시오 : [Delphi XE에서 FastMM 메모리 누수보고를 켜고 끄려면 어떻게합니까?] (http://stackoverflow.com/q/6075554/576719) 또는 여기 [ FastMM4에서 전체 디버그 모드를 활성화하는 방법?] (http://stackoverflow.com/a/8601505/576719). –