如何比較變量的值,該變量包含指向具有函數地址的函數的指針?在Delphi中比較函數值的指針
我保持了一些代碼,它是在2007年德爾福失敗的聲明是:
var
EditorFrameWindow: Function: HWnd Of Object = Nil;
在形式激活,我已經有了:
procedure TEditForm.FormActivate(Sender: TObject);
begin
EditorFrameWindow := GetFrameWindow;
end;
而在形式去激活我得到了:
procedure TEditForm.FormDeactivate(Sender: TObject);
begin
if EditorFrameWindow = GetFrameWindow then
EditorFrameWindow := nil;
end;
所以發生的是該表單被停用兩次,它是因爲沒有其他東西被激活。 FormDeactivate被調用,它匹配,並且EditorFrameWindow global被設置爲(nil,nil)(根據調試器)。然後再次調用它,並調用存儲在變量中的函數,但當然沒有存儲的函數,所以它跳過零並創建一個異常。
我該怎麼做才能阻止這種情況的發生? (該框架已更改爲一個標籤式的系統,因此操作可能改變。)
聽起來像錯誤是在你沒有顯示的GetFrameWindow裏面。 – 2009-06-22 11:15:11
對於初學者來說 - 爲什麼不總是將EditorFrameWindow設置爲FormDeactivate中的零? – gabr 2009-06-22 13:14:36
實際上只包含「Result:= Handle」。 – mj2008 2009-06-22 13:23:11