Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mal wieder IniFiles (https://www.delphipraxis.net/6373-mal-wieder-inifiles.html)

Tim.exe 8. Jul 2003 17:53


Mal wieder IniFiles
 
Hallo,

ich schreibe und lese Werte über OnCreate und OnDestory in eine *.ini

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var savestat: TIniFile;
begin
savestat := TIniFile.Create(ExtractFilepath(Application.Exename)+'settings.ini');
try
RadioBox1.Checked:=savestat.ReadBool('Start', 'Status1', RadioBox1.Checked);
Edit1.Text:=savestat.ReadBool('Text', 'Status1', Edit1.Text);
finally
savestat.Free;
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var savestat: TIniFile;
begin
savestat := TIniFile.Create(ExtractFilepath(Application.Exename)+'settings.ini');
try
savestat.WriteBool('Meldung1', 'Start', RadioBox1.Checked);
savestat.WriteString('Text', 'Status1', Edit1.Text);
finally
savestat.Free;
end;
end;
Das funktioniert tadellos sofern ich das Programm manuell beende.

Ändere ich aber die Werte und reboote oder beende Windows ohne das Programm zuvor manuell beendet zu haben, werden die geänderten Werte nicht gespeichert und sind bei einem erneuten Programmstart nicht vorhanden.

Wie kann ich das unterbinden? Also das die neuen Werte vor dem Reboot noch gespeichert werden.
Hat jemand nen kleinen Tip?

Duffy 8. Jul 2003 18:06

Re: Mal wieder IniFiles
 
Hallo Tim.exe,
das sollte Dir weiterhelfen, obwohl es auch nicht verläßlich ist.
Delphi-Quellcode:
procedure WMEndSession(var Message: TWMEndSession); message WM_ENDSESSION;


procedure TMainForm.WMEndSession(var Message: TWMEndSession);
begin
  if Message.EndSession then
  begin
    // ShowMessage('Windows is shutting down !');
  end;
  inherited;
end;
bye

Alexander 8. Jul 2003 18:09

Re: Mal wieder IniFiles
 
Ich vermute mal, dass das Destroy-Event dann nciht mehr ausgeführt. Bin mir aber nciht sicher, dachte eigentlich schon, dass es ausgeführt wird.
Versuch mal OnClose (querry)

Luckie 8. Jul 2003 18:10

Re: Mal wieder IniFiles
 
Was erwartest du? Wenn ich den Stecker rausziehe, dann ist eben Schluß. OnDestroy wird eben nur aufgerufen, wenn das Fenster "zerstört" wird und wenn du dein Programm abschießt, dann wird das Ereignis eben nicht mehr aufgerufen.

r_kerber 8. Jul 2003 18:15

Re: Mal wieder IniFiles
 
Aber wenn man Windows herunterfährt bzw. neu bootet, wird das Programm doch nicht abgeschossen, sondern erhält eine Botschoft zum beenden, oder?

Luckie 8. Jul 2003 18:17

Re: Mal wieder IniFiles
 
Ja. Aber was nützt das, wenn du nicht darauf reagierst? Deswegen ist ja auch der Code von Duffy nötig.

Tim.exe 8. Jul 2003 18:31

Re: Mal wieder IniFiles
 
Hallo,

Danke für die schnellen Antworten, werde den code von Duffy mal ausprobieren.

Das mit OnCloseQuery hab ich mir auch schon überlegt, werde ich auch mal testen :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz