Как побороть: "A component name already exist"?
Вот такой код успешно компилируется и запускается на выполнение:
Но, естественно, вываливает сообщение при запуске <span style='color:red'>Event handler must be a procedure</span> на строчку Form.OnShow := @OnShow;.
заремливаю строчку:
Перекомпилирую, ок! Запускаю -> Exception: <span style='color:red'>"A component name fmTestForm already exists"</span>.
И такое сообщение получаю при любой ошибке в RunTime.
Естественно, перед компиляцией у меня стоит очистка:
#language PascalScript
var
Form: TForm;
begin
Form := TForm.Create(fmMain);
Form.Name := 'fmTestForm';
Form.Caption := 'Тестовая форма';
Form.SetBounds(100, 100, 200, 200);
Form.OnShow := @OnShow;
Form.ShowModal;
Form.Free;
end.
Но, естественно, вываливает сообщение при запуске <span style='color:red'>Event handler must be a procedure</span> на строчку Form.OnShow := @OnShow;.
заремливаю строчку:
...
//Form.OnShow := @OnShow;
...
Перекомпилирую, ок! Запускаю -> Exception: <span style='color:red'>"A component name fmTestForm already exists"</span>.
И такое сообщение получаю при любой ошибке в RunTime.
Естественно, перед компиляцией у меня стоит очистка:
...
fsScript1.Clear;
fsScript1.Lines := Memo1.Lines;
fsScript1.Parent := fsGlobalUnit;
...
Как с этим можно бороться?
Комментарии
Вот код:
Напрашивается вопрос, это ошибка FS, или правильно все таки создавать объект TForm нужно с <span style='color:red'>nil</span> ..?
Дело в том, что Event handler must be a procedure - это ошибка run-time, а не compile-time. Поэтому часть кода успевает отрабатывать и форма, ессно, создается, но не убивается. Должно помочь использование try/finally.