Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Anwendung zeitversetzt starten


Bob Murphy - Do 05.11.09 12:55
Titel: Anwendung zeitversetzt starten
Moin Moin,

ich habe ein kleines Tool was seinen Dienst erst ab einer bestimmten Uhrzeit verrichten soll.
Das Problem ich gehe meist um 23Uhr schlafen, vorher starte ich noch schnell das Tool, jetzt soll das Tool aber erst zb um 24Uhr anfangen zu arbeiten.
Einfach einen Timer auf 1 Stunde einstellen möchte ich nicht. Auch möchte ich den Taskplaner oder wie das Ding heißt nicht benutzen. Ich stell mir das so vor das man zb in einen Editfeld die gewünschte Uhrzeit eingibt und das Programm dem entsprechend anfängt zu arbeiten.
Wie setzt man sowas geschickt in die Tat um?

LG Bob


kalmi01 - Do 05.11.09 13:06

Hi,

Du kannst doch von Deiner Ziel-Zeit (z.B. 23:45) die aktuelle Zeit (z.B. 19:21) abziehen und anschliessen Dein Prg so lange mit sleep schlafen schicken.


Fighter#1 - Do 05.11.09 14:21

Naja, also gegen einen Timer, der Sekundenweise läuft spricht ja ansich nix!
So wie kalmi sagt, du berechnest wieviele Sekunden dein Programm warten muss, zB Timestamp von der Startzeit - aktuellen Timestamp.
Und dieser Wert wird bei jedem Timer aufruf um 1 Sekunde abgezogen, bei 0 ist dann die Zielzeit erreicht und du kannst den Funktionsaufruf ausführen.
Sleep ist nicht zu empfehlen, da das Programm zu der Sleep Zeit auf nichts reagiert;)


Critter - Do 05.11.09 14:40

Hi,
user profile iconFighter#1 hat folgendes geschrieben Zum zitierten Posting springen:
Naja, also gegen einen Timer, der Sekundenweise läuft spricht ja ansich nix!
So wie kalmi sagt, du berechnest wieviele Sekunden dein Programm warten muss, zB Timestamp von der Startzeit - aktuellen Timestamp.
Und dieser Wert wird bei jedem Timer aufruf um 1 Sekunde abgezogen, bei 0 ist dann die Zielzeit erreicht und du kannst den Funktionsaufruf ausführen.

warum dieses Rumgerechne? Was spricht denn dagegen im Timer event einfach mit now die Aktuelle Uhrzeit abzufragen und los zu legen wenn diese >= der Startzeit ist (und der heutige Lauf noch nicht stattgefunden hat)?

critter


Bob Murphy - Do 05.11.09 17:03

Vielen Dank für eure Antworten.
Hab mich jetzt an Critter´s Gedankenanstoß gehalten....

LG Bob


der organist - Do 05.11.09 20:21

ansonsten kannst du auch die Zeitdiffenrenz errechnen, und dann als Timerintervall eingeben. Und in die Timerprozedur schreibst du naja, eben deinen Code.