Làm cách nào tôi có thể so sánh giá trị của biến có chứa con trỏ trỏ đến hàm có địa chỉ hàm?So sánh con trỏ với giá trị của hàm trong Delphi
Tôi đang duy trì một số mã, và nó là không trong Delphi 2007. Việc kê khai là:
var
EditorFrameWindow: Function: HWnd Of Object = Nil;
Trong một hoạt hình, tôi đã có:
procedure TEditForm.FormActivate(Sender: TObject);
begin
EditorFrameWindow := GetFrameWindow;
end;
Và trong hình thức ngừng hoạt động Tôi đã có:
procedure TEditForm.FormDeactivate(Sender: TObject);
begin
if EditorFrameWindow = GetFrameWindow then
EditorFrameWindow := nil;
end;
Vì vậy, những gì đang xảy ra là biểu mẫu đang bị hủy kích hoạt hai lần và đó là thất bại vì không có gì khác được kích hoạt. FormDeactivate được gọi, nó khớp và toàn bộ EditorFrameWindow được đặt thành (nil, nil) (theo trình gỡ lỗi). Sau đó nó được gọi lại và hàm được lưu trữ trong biến được gọi, nhưng tất nhiên không có một tệp được lưu trữ để nó nhảy qua nil và tạo ra một ngoại lệ.
Tôi nên làm gì để ngăn điều này xảy ra? (Khung đã được thay đổi thành một hệ thống theo thẻ, do đó hoạt động có thể thay đổi.)
Âm thanh như lỗi bên trong GetFrameWindow mà bạn không hiển thị. –
Đối với người mới bắt đầu - tại sao bạn không luôn đặt EditorFrameWindow thành nil trong FormDeactivate? – gabr
Điều đó thực sự chỉ chứa "Kết quả: = Xử lý". – mj2008