Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 10 sec. warten (https://www.delphipraxis.net/15327-10-sec-warten.html)

TomDooley 26. Jan 2004 15:44


10 sec. warten
 
Hallo allerseits

Ich habe ein kleines Problem. Anschliessend mein Pseudo-Code:

Delphi-Quellcode:
...
Sende Telegramm an anderen Prozess P2 (P2 ändert eine Tabelle)
warte 10 Sekunden
prüfen ob Prozess P2 die Änderung gemacht hat
wenn ja, Program weiter ausführen; wenn nein, nochmals 10 sec. warten (max. 3mal)
...
:gruebel: Also, das Ganze scheint ja nicht so schwierig. Mir geht es vorallem darum, wie ich das nun am Besten realisieren soll: mit sleep, delay oder mit einem Timer (TTimer)?? Ich würde sleep benutzen... Geht das überhaupt mit einem Timer?? Wenn ja wie? (ist es nicht so dass das Programm "während" dem Timer weiterlaufen würde?)

es dankt und grüsst

TomDooley

Chris1986 26. Jan 2004 15:45

Re: 10 sec. warten
 
sleep geht glaube ich nicht, weil es die ganze anwendung einfriert. Oder sehe ich das falsch? Ich würde Delay benutzen.

MfG
Christian

Tonic1024 26. Jan 2004 15:49

Re: 10 sec. warten
 
Hi...

Timer ist gut... weil der dur dein Programm einfriert und nicht den ganzen Computer...
Du hast natürlich recht. Das Programm würde weiterlaufen, du musst es also irgendwie beschäftigen. Zum Beispiel mit ner Endlosschleife...

Versuch mal eine Bool-Variable dafür zu benutzen...

Etwa so:
Code:
setze BlWarten(Bool) auf true
Starte den Timer, der nach 10 sec BlWarten auf false setzt.
while BlWarten do
 // Do something... or not
if nothinghappend then
...
hoffe das hilft dir etwas... geht zwar auch eleganter aber auch komplizierter :wink:

Michael Leyhe 26. Jan 2004 15:51

Re: 10 sec. warten
 
HI

Es ist eigentlich egal ob du es mit einem Timer oder mit delay machst aber wie "Chris1986" schon sagte wird bei sleep das Programm eingefroren.

Chris1986 26. Jan 2004 15:58

Re: 10 sec. warten
 
in der Code-Library (DelayDelay) ist eine sehr sehr gute Delay-Procedure. Die habe ich auch schon oft benutzt und kann sie nur empfehlen
:dp:

[Edit] Ups, ist ja ne procedure :oops: [/Edit]
MfG
Christian

TomDooley 27. Jan 2004 10:11

Re: 10 sec. warten
 
Hallo

Ist mit der Timer-Lösung von Tonic1024 nicht die CPU voll ausgelastet?? (das sollte wenn möglich vermieden werden....)

zopf 27. Jan 2004 11:31

Re: 10 sec. warten
 
hier eine gute delay-proc..

Delphi-Quellcode:
 procedure delay(ms:Integer);
 var
   Start:real;
  begin
    Start := GetTickCount;
    repeat
      Application.ProcessMessages;
    until GetTickCount-Start > ms;
  end;{proc...}
herzliche grüsse, zopf

[edit=Luckie]Delphi-Tags gestezt. Bitte beim nächsten mal selber machen. Danke. Mfg, Luckie[/edit]

Luckie 27. Jan 2004 11:36

Re: 10 sec. warten
 
@zopf: Rat mal wohin der Lonk von Chris1986 führt....

Btw. ist deine schlechter. GetTickCount gibt einen Integer zurück, du deklarierst aber Start als Real Typ (wo bei man selbst diesen schon vermeiden sollte und statt dessen Extended oder Double nehmen sollte), was dazu führt, dass intern immer noch ein Cast durchgeführt werden muss.


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