У меня есть проблемы, когда я пытаюсь определить, является ли ссылка на объект действительной. Но, похоже, он возвращает странные результаты.
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» (как я и ожидал).
Второе возвращение показа сообщения - "TForm - - False". Я действительно надеялся на какое-то нарушение доступа, которое я мог бы затем перехватить и узнать, что ссылка недействительна.
В моем приложении мне нужно составить список случайных потомков TForm по мере их создания, а затем проверить, не исчезли ли они (или не видны). К сожалению, это система на основе плагинов, поэтому я могу изменить все эти формы, чтобы опубликовать сообщение «Я закончил».
Будет ли такой код безопасным для использования (при условии, что я действительно проверяю нарушения прав доступа)? У кого-нибудь есть идеи, что происходит?
Спасибо