![]() |
Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne
Was wenn der Timer eine Sekunde nach zwei Uhr aufgerufen wird? Die Abfrage muss auf größer lauten und nicht auf gleich.
Zitat:
|
Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne
Nein, denn das hat 2 Probleme:
-Da du genau abfragst, ist es sehr wahrscheinlich, dass es nie wahr wird. -wenn einmal gestartet ist, friert es dein System ein. Soll deine Prozedur wirklich ununterbrochen aufgerufen werden?
Delphi-Quellcode:
procedure TForm1.StarteFunktion;
begin // Prüfen ob die Anfangszeit erreicht ist if now > EncodeTime( 14, 0, 0) and Now < EncodeDate(16,0,0) then begin StarteEineBestimmteProcedure; end; end; |
Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne
ja in der zeitspanne dieser 2 stunden soll das Programm etwas abarbeiten, ist z.b 16:00 erreicht soll sie aufhören und 24 stunden später erneut anfangen
|
Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne
Was macht diese Funktion denn? Muss sie kontinuierlich neu aufgerufen werden? Das könntest du mit einem Thread regeln, ansonsten friert das Programm ein.
|
Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne
diese Funktion guckt an einem bestimmten Ort nach ob Dateien da sind, wenn ja ließt sie die Inhalte in die DB. In dieser Zeispanne können nach einander mehrere Dateien reinkommen und die Funktion prüft nach der Abarbeitung einer Datei ob eine neue da ist und macht immer so weiter bis Endzeitpunkt erreicht ist. 24 Std. später muss erneut diese Funktion aufgerufen werden, ohne das Programm neustarten zu müssen!
|
Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne
Wenn eine bestimmte Zeit vorgegeben ist, ist die beste Lösung ein Waitable Timer.
|
Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne
hierzu hab ich nur das gefunden
![]() als NuberOfSeconds müsste ich dann mein Abstand nehmen? hätte gedacht das es einfacher geht :-) |
Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne
Das meinte ich nicht. Lies dir doch mal die
![]() Die Materie kann allerdings sehr verwirrend sein, wenn man sich nicht mit Windows-Programmierung auskennt. |
Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne
ich DANKE ersteinmal allen beteiligten für die hilfreichen Antworten!!!!
ich werde mir bei gegenheit die Doku auf jedenfall mal ansehen und nach besserer Lösung dort suchen. auf die schnelle hab ich das nun so gelöst, es funktioniert für meine Anforderungen zumindest:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin Timer := TTimer.Create(self); Timer.Interval := 1000; Timer.Enabled := True; Timer.OnTimer := StarteMeineFunktion; end; procedure TForm1.StarteMeineFunktion(Sender: TObject); var Y, M, D : Word; Startzeit, Endzeit : TDatetime; begin // Aktuelles Datum entschlüsseln DecodeDate(Now, Y, M, D); // Startzeit und Endzeit vorbelegen Startzeit := EncodeDate(Y,M,D) + EncodeTime(14,0,0,0); Endzeit := EncodeDate(Y,M,D) + EncodeTime(16,0,0,0); // Prüfen, ob ich innerhalt der Zeitspanne bin if (now > Startzeit) and (Now < Endzeit) then begin // Timer aussetzen timer.Enabled := false; BEGINNEMITDEMLESEVORGANG; // Timer erneut einschalten timer.Enabled := true; end end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz