Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Um xxx Uhr Procedure ausführen (https://www.delphipraxis.net/46148-um-xxx-uhr-procedure-ausfuehren.html)

glkgereon 19. Mai 2005 14:32


Um xxx Uhr Procedure ausführen
 
hi

kann ich irgendwie eine Art Timer setzen, der nur darauf wartet das es xxx Uhr ist und dann eine OnTime oder so ausführt?

ein Timer is mir irgendwie zu ressourcenlastig und auch irgendwie "zu blöd".

Aenogym 19. Mai 2005 14:35

Re: Um xxx Uhr Procedure ausführen
 
hi,

prüfe doch in einem extra thread per schleife auf die aktuelle zeit...

edit: der kann auch ruhig niedriger priorität sein. dann prüfst du eben mit ein paar sekunden puffer rundherum ;)

aenogym

glkgereon 19. Mai 2005 14:37

Re: Um xxx Uhr Procedure ausführen
 
um ehrlich zu sein, die sache ist es mir nicht wert dafür nen thread zu machen.
ausserdem: wesentlich besser als ein timer ist es nicht (überhaupt besser?)

barf00s 19. Mai 2005 14:40

Re: Um xxx Uhr Procedure ausführen
 
ein Timer ist dir zu resourcenlastig? ~schmunzel~
das ist unfug - TTimer kapselt auch nur die CreateTimer & Co winapi funktionen.

aber um einen task/process oder was auch immer zu einer bestimmten uhrzeit zu starten brauchst blos in deinem xTimer.OnTimer
zu schaun wie spät es ist.

Delphi-Quellcode:
procedure TfrmMain.xTimerTimer(Sender: TObject);
var
  iHour: word;
  iMinute: word;
  iTemp: word;

begin
  DecodeTime(iHour, iMinute, iTemp, iTemp);
  case iHour of
    00: begin
          case iMinute of
            00: begin
                end;
          end;
        end;
  end;
{
  oder baust dir ne liste zusamm die du hier dann einfach durchiterierst und deren items[index].zeit eigenschaft mit der aktuellen zeit vergleichst
}
end;

Aenogym 19. Mai 2005 14:41

Re: Um xxx Uhr Procedure ausführen
 
es ist genauer (komtm auf priorität an) und ein extra thread ist unabhängig von dienem rpogramm (blockiert diene anwendung also nicht).

wenn dir das einen thread nicht wert ist,d ann nutze doch den timer und prüfe auf die zeit. eben mit ein paar sekunden drumherum.

aenogym

glkgereon 19. Mai 2005 14:47

Re: Um xxx Uhr Procedure ausführen
 
hmm, ok, ich machs mit nem timer. :|

wobei es mir vom prinzip her widerstrebt für eine sache, die einmal zu einem festgelegten zeitpunkt passieren soll, jede sekunde ne dämliche procedure auszuführen :?

Edit:
IDEE!!!

Interval auf die gewünschte Zeit einstellen! *Glücklich bin*

Vjay 19. Mai 2005 15:05

Re: Um xxx Uhr Procedure ausführen
 
Ich weiß ja nicht wie genau der Zeitrahmen ist aber ich prüfe solche Events immer minütlich in nem Timer.

bigg 19. Mai 2005 15:14

Re: Um xxx Uhr Procedure ausführen
 
Alle 10 Sekunden sollte ausreichen.

barf00s 19. Mai 2005 15:17

Re: Um xxx Uhr Procedure ausführen
 
alle wieviel sekunden ers nu letztendlich prüft war ja egal, es ging ja mehr ums prinzip :klugscheiß:

JasonDX 19. Mai 2005 15:19

Re: Um xxx Uhr Procedure ausführen
 
Oder die MSDN-Library durchsuchenSetTimer-Funktion nehmen. Ist eigentlich das, was der Timer verwendet, aber in Kombination mit Subtraktion der jetztigen Zeit von der der "Zielzeit" dürfte das gewünschte Ergebnis erbringen ;)

(Gleiche Idee wie glkgereon eigentlich schon hatte, aber halt ohne Timer ;) )

Sämy 19. Mai 2005 15:26

Re: Um xxx Uhr Procedure ausführen
 
oder du installierst dir die jedi-komponenten und da hat es dann eine komponente TJvClock, bei der du eine Alarmzeit und -event einstellen kannst.

oder gibt es nicht auch bei windows irgentwo einen sheduler, dem du sagen kannst, dass er dein programm um diese uhrzeit ausgeführt werden soll? (geht natürlich nur, wenn du dein programm nicht noch andersweitig brauchst..)

barf00s 19. Mai 2005 15:41

Re: Um xxx Uhr Procedure ausführen
 
dann kann man sich auch gleich selber im taskscheduler vom windows sein gewünschtes ereignis einstellen ._.

glkgereon 19. Mai 2005 17:55

Re: Um xxx Uhr Procedure ausführen
 
naja, also es geht ja nicht darum zu ner bestimmten uhrzeit ne anwendung auszuführen sondern ne prog-interne procedure

alzaimar 19. Mai 2005 20:10

Re: Um xxx Uhr Procedure ausführen
 
Halten wir fest:
a) Du benutzt eine TTimer-Komponente, rufst 1x pro Minute oder so den Timer-Event auf und checkst, ob es schon Zeit ist.
b) Du nimmst einen Thread, hast in der Execute-Methode ein Sleep (60000) oder so und checkst, ob es schon Zeit ist.

Beides belastet deinen Rechner kaum, ausser Du fährst noch eine 2,5kHz CPU, da fällt das schon auf.
Ich weiss nicht genau, wie das bei den neueren PC und Wins W2K / XP ist, aber irgendwann gab es mal eine Beschränkung auf 32 Timer...
Aber, wer hat die schon.

Nimm a). Machen Alle so.

JasonDX 19. Mai 2005 21:01

Re: Um xxx Uhr Procedure ausführen
 
Du hast c) Vergessen:
Den Zeitunterschied (dt) zwischen dem Zeitpunkt, an dem die Prozedur ausgeführt werden soll, und jetzt (Delphi-Referenz durchsuchentime()) ins Timer-Intervall schreiben. Braucht nur einen Timer-aufruf und nicht einen Ständigen Prozeduraufruf und if-Abfrage ;)

glkgereon 19. Mai 2005 21:24

Re: Um xxx Uhr Procedure ausführen
 
oder d) Jvcl-Kompo JvAlarm ;)

DGL-luke 19. Mai 2005 22:49

Re: Um xxx Uhr Procedure ausführen
 
oder e) deine prozedur in den windows-taskplaner einbinden :stupid:

masterchris_99 3. Mai 2007 08:57

Re: Um xxx Uhr Procedure ausführen
 
Sag mal habt ihr mit der JvClock auch das problem das er immer sagt der Eigenschaftswert DateFormat ist nicht vorhanden?

mfg Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:29 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