AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie Prozedur immer zu best. Zeit starten ohne Taskplanner?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Prozedur immer zu best. Zeit starten ohne Taskplanner?

Ein Thema von JuliaBecks · begonnen am 17. Mai 2008 · letzter Beitrag vom 17. Mai 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne

  Alt 17. Mai 2008, 16:01
Was wenn der Timer eine Sekunde nach zwei Uhr aufgerufen wird? Die Abfrage muss auf größer lauten und nicht auf gleich.

Zitat von JuliaBecks:
das klappt nicht denn alle 2 Sek startet meine funktion ohne das Zeit geprüft wird
Was heißt das? Wird deine Funktion in einer Schleife ständig aufgerufen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne

  Alt 17. Mai 2008, 16:02
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;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von JuliaBecks
JuliaBecks

Registriert seit: 6. Dez 2006
45 Beiträge
 
#13

Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne

  Alt 17. Mai 2008, 16:07
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
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne

  Alt 17. Mai 2008, 16:09
Was macht diese Funktion denn? Muss sie kontinuierlich neu aufgerufen werden? Das könntest du mit einem Thread regeln, ansonsten friert das Programm ein.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Benutzerbild von JuliaBecks
JuliaBecks

Registriert seit: 6. Dez 2006
45 Beiträge
 
#15

Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne

  Alt 17. Mai 2008, 16:15
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!
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne

  Alt 17. Mai 2008, 16:16
Wenn eine bestimmte Zeit vorgegeben ist, ist die beste Lösung ein Waitable Timer.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von JuliaBecks
JuliaBecks

Registriert seit: 6. Dez 2006
45 Beiträge
 
#17

Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne

  Alt 17. Mai 2008, 16:23
hierzu hab ich nur das gefunden

http://delphi32.blogspot.com/2006/03...in-delphi.html

als NuberOfSeconds müsste ich dann mein Abstand nehmen?

hätte gedacht das es einfacher geht
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne

  Alt 17. Mai 2008, 16:42
Das meinte ich nicht. Lies dir doch mal die Dokumentation durch. Das tolle an Waitable Timern ist nämlich, dass du eine absolute Zeit angeben kannst, nicht nur einen Abstand wie bei normalen Timern. Der einzige Nachteil ist, dass du die geposteten APCs irgendwie annehmen musst, aber es sollte eigentlich kein Problem sein, die Nachrichtenschleife auf ein alterables (?) Warten umzustellen.

Die Materie kann allerdings sehr verwirrend sein, wenn man sich nicht mit Windows-Programmierung auskennt.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von JuliaBecks
JuliaBecks

Registriert seit: 6. Dez 2006
45 Beiträge
 
#19

Re: Wie Prozedur immer zu best. Zeit starten ohne Taskplanne

  Alt 17. Mai 2008, 16:58
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 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