我有一个问题,我正在尝试确定一个对象的引用是否有效。但它似乎返回奇怪的结果。
procedure TForm1.Button1Click(Sender: TObject);
var form1 : TForm;
ref2 : TControl;
begin
form1 := TForm.Create(nil);
form1.Name := 'CustomForm';
form1.Parent := self; //Main Form
form1.Show;
ref2 := form1;
showmessage(ref2.ClassName+' - '+ref2.Name+' - '+BoolToStr(ref2.visible,true));
freeandnil(form1);
showmessage(ref2.ClassName+' - '+ref2.Name+' - '+BoolToStr(ref2.visible,true));
end;
第一个showmessage返回值为“TForm - CustomForm - True”(就像我所期望的那样)。
第二个showmessage返回值为“TForm - - False”。实际上,我希望能够出现某种访问冲突,然后捕获它并知道该引用无效。
在我的应用程序中,我需要编译一个随机TForm子类列表,因为它们被创建,然后稍后检查它们是否已经消失(或不可见)。不幸的是,这是一个基于插件的系统,所以我不能去改变所有这些表单来发布“我完成了消息”。
像这样的代码是否安全使用(假设我确实正在检查访问违规)?有人有任何想法发生了什么。
谢谢。