0

破棄する必要のある動的に作成されたフォームがあります。

  • 後で(アプリケーションのシャットダウン時)IFAssignDataが成功した場合、または
  • AssignDataクラッシュした場合に備えてすぐに。

フォームはアプリケーションが所有しているため、単に呼び出すだけでは安全ではありませんFreeAndNil。しかし、Closeまた機能しません。ウィンドウは閉じません。

FrmLoader:= TFrmLoader.Create(Application);  <----- Application is the Owner                            
TRY
  FrmLoader.AssignData(FileData);                                      
EXCEPT                                                              
  FreeAndNil(FrmLoader);  // <------ unsafe                                            
  FrmLoader.Close;        // <------ this is the safe method to close it but won't work
  RAISE;       
END;
FrmLoader.DoStuff;
4

1 に答える 1

3

Free所有しているフォームを呼び出すことは完全に安全です。または、フォームをに渡しFreeAndNilます。そして、それはあなたのフォームを処分する正しい方法です。

したがって、このコードは必要なことを実行します。

FrmLoader:= TFrmLoader.Create(Application);
TRY
  FrmLoader.AssignData(FileData);                                      
EXCEPT                                                              
  FreeAndNil(FrmLoader);
  RAISE;       
END;
于 2012-10-02T14:57:54.953 に答える