procedure TMainForm.FormDestroy(Sender: TObject);
var
Registry: TRegistry;
begin
Registry := TRegistry.Create;
try
Registry.RootKey := HKEY_CURRENT_USER;
if Registry.OpenKey('...', True) then
begin
Registry.WriteInteger('MainLeft', Self.Left);
Registry.CloseKey;
end;
finally
Registry.Free;
end;
end;
類似的代碼適用於FORMCREATE,但不是當應用程序被關閉(即沒有被保存到註冊表)。我錯過了什麼?德爾福:寫入註冊表FormDestroy不工作
'...'代表註冊表項名稱。既然它適用於FormCreate,我不認爲這是一個問題。
如果我添加MainForm.Destroy的程序代碼:
begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
MainForm.Destroy;
end.
沒有什麼變化。如果我還將FormDestroy設置爲MainForm的OnDestroy事件,則在關閉應用程序時會出現「訪問衝突」錯誤。
通常調用_free_而不是_destroy_更安全,因爲free會在調用destroy之前檢查nil指針。無論如何,你不需要釋放mainform,因爲它會爲你解放。 – Argalatyr 2009-07-11 21:34:36