Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Abarbeiten von Befehlen - Reihenfolge etc. (https://www.delphipraxis.net/70405-abarbeiten-von-befehlen-reihenfolge-etc.html)

snapman 29. Mai 2006 22:53


Abarbeiten von Befehlen - Reihenfolge etc.
 
Hallo,
hätte mal eine interessante Frage:

Also ich hab folgenden Code:

Delphi-Quellcode:
code vor timer
timer1.Enabled:=true;
code nach timer
Wenn der Code so ist dann führt Delphi die Befehle die nach dem Timer kommen sofort aus, ohne zu warten.....
Nun habe ich mal das ganze etwas modifiziert:

Delphi-Quellcode:
code vor timer
timer1.Enabled:=true;
while timer1.Enabled=true do Application.ProcessMessages;
code nach timer
und nun wartet delphi bis der timer abgearbeitet ist und führt dann erst den code nach dem timer aus

könnt ihr mir erklären wie das delphitechnisch zusammenhängt?

fkerber 29. Mai 2006 22:56

Re: Abarbeiten von Befehlen - Reihenfolge etc.
 
Hi!

Wieso das so ist?
Soweit ich das richtig verstehe, dann "hängt" Delphi doch in der while-Schleife fest, bis diese (und damit der Timer) fertig ist und macht erst dann weiter!


Ciao Frederic

snapman 29. Mai 2006 23:14

Re: Abarbeiten von Befehlen - Reihenfolge etc.
 
hm stimmt du hast recht :nerd:

ist die lösung so akzeptabel oder gibt es ne elegantere lösung für das problem?

Klaus01 30. Mai 2006 06:14

Re: Abarbeiten von Befehlen - Reihenfolge etc.
 
Guten Morgen,

wozu brauchst Du denn so ein Konstrukt?
Ein Timer ist doch gerade dazu da unabhängig
wo das Programm gerade in der Verarbeitung ist
in bestimmten Zeitabständen etwas zu tun.

Wenn das Programm solange nichts machen soll
wenn der Timer enabled ist - der Sinn dazu verschließt sich
mir ein wenig.

Denn Timer.enabled = true heißt ja auch nur,
daß der Timer scharf geschaltet ist und nicht
ob die Timer Methode schon abgearbeitet wurde.
Es sei denn Du setzt den Timer.enabled := false
in der Timer Methode zurück.

Dann kannst Du das Konstrukt

Delphi-Quellcode:
code vor timer
timer1.Enabled:=true;
while timer1.Enabled=true do Application.ProcessMessages;
code nach timer
Delphi-Quellcode:
code vor timer
delay(Zeit)
code nach timer
Grüße
Klaus


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