Entwickler-Ecke

Sonstiges (Delphi) - Auf Flag warten ohne CPU zu belasten


moelski - Fr 22.12.06 11:27
Titel: Auf Flag warten ohne CPU zu belasten
Hallo !

Kann mir jemand einen Tip geben wie ich auf das setzen eines Flags (z.B. Boolean von False nach True) in einer Procedure warten kann, ohne die CPU dadurch zu belasten und das der Rest des Programms noch bedienbar ist?

Ich bin leider gezwungen ein paar Befehle sequentiell abzuarbeiten und ich muss immer warten bis der vorherige Befehl erfolgreich durch ist.

Greetz Dominik


Kroko - Fr 22.12.06 12:22

Ohne CPU wird ja schlechT gehen, im allgemeinen reicht

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  I: Integer;
begin
  I := 0;
  repeat
    Sleep (0); // die Zahl ein bisschen ausprobieren
    if (I mod 100)=0 then Application.ProcessMessages; // nicht immer aufrufen, ebenfalls ausprobieren
    Inc (I);
  unit Flag=True;
end;


Narses - Fr 22.12.06 12:22

Moin!

Immer das Gleiche, "ereignisorientiert Warten"... :roll: ;)

Das ist der falsche gedankliche Ansatz, du mußt das ereignisorientiert sehen: definiere ein entsprechendes Ereignis und zugehörige Anwendungszustände, zwischen denen du über die Ereignisse wechselst. So kommst du weiter. ;)

cu
Narses


Kroko - Fr 22.12.06 12:24

oder so :wink:


Narses - Mo 25.12.06 20:17

Moin!

Da diese Frage eigentlich immer von Zeit zu Zeit mal auftaucht, habe ich jetzt einen entsprechenden FAQ-Beitrag [http://www.delphi-library.de/viewtopic.php?p=408843#408843] daraus gemacht.

cu
Narses