Zitat:
Dachte mir auch schon ,dass die letzte speicherung in ein ini-file geschrieben wird, beim programmstart wird die ini gelesen.
alledings läuft das programm manchmal sehr viele stunden. daher müßte auch ein timer her, der alle stunde prüft ob gesichert werden muss.
Aber eben genau um die prozedur der überprüfung geht es, wie soll ich das realisieren?
Genau das meinte ich mit meiner 2. Variante. Einfach die Speichern-Prozedur in eine eigene Prozedur auslagern. Diese dann beim Start (Stichwort: ini-Datei Datum/Zeit auslesen) ggf. aufrufen. In der Prozedur nur die Speicher-Routine inkl. INI-Datei schreiben einfügen.
Nach dem Start brauchst Du aber - wenn kein Thread wie angedeutet - noch einen Timer. Das ONTimer-Even könntest Du dann z.B. alle 10 MInuten aufrufen und prüfen ob morgens bzw. abends schon gespeichert wurde. Falls nein, dann ggf. die Speicher-Prozedur aufrufen. Deswegen auslagern des Speicherns, da die PRozedur mehrmals im Code (ONCreate, OnClose, ONTimer) verwendet werden soll.
Um zu prüfen ob schon gespeichert wurde, könntest Du folgendes machen:
Beim programmstart:
1. Letzte PRüfung auslesen (INI-Datei --> TDateTime Variable)
2. Varialbe setzen für letzte sicherung (z.B. integer 1=morgens gesichert, 2=abends gesichert)
Beim ONTimer-Event:
3. Aktuelle Zeit auslesen
4. WEnn 3. zwsichen 8 und 9 Uhr UND variable = 2 (letzte sicherung abends)--> sichern und variable auf 1 setzen
5. wenn 3. zwischen 19 und 20 Uhr UND variable =1 (s. oben) --> sichern und variable auf 2 setzen.
Ggf. musst Du auch noch das Datum prüfen falls der PC z.B. 2 Tage aus war.
Kurz gesagt: Timer alle 5 MInuten aufrufen und wenn bei Timeraufruf aktuelle Uhrzeit abends bzw. morgens entspricht (zeitspanne) dann sichern und "backup_flag" entsprechend setzen, damit während der Zeitspanne nicht öfters gespeichert wird (timer wird ja alle x Min. aufgerufen).
Eine andere Möglichkeit sehe ich nicht auf die Schnelle.
SCRaT