Entwickler-Ecke
Sonstiges (Delphi) - Prozedur unterbrechen
DelphiUnfreak - Mo 04.04.05 11:21
Titel: Prozedur unterbrechen
Hallo Leute!
Ich muss im Informatikunterricht in der Schule ein Delphiprojekt machen und habe dabei ein kleines Problem. Ich habe nämlich eine Prozedur und einen Timer. Die Prozedur soll erst weiterlaufen, wenn die Variable 0 ist. Dabei komme ich auf den Timer. Im Timer wird die Variable verringert. Nun soll die Prozedur so lange anhalten, bis der Timer den "0-Wert" für die Variable liefert. Erst dann soll die Prozedur weitermachen.
Ich denke, dass das für euch Delphi-Profis keine Schwierigkeit ist und hoffe mir kann hier schnell jemand helfen. Dafür bedanke ich mich schon einmal im Vorraus!
Moderiert von
raziel: Titel geändert.
Backslash - Mo 04.04.05 11:25
Ich hab schon länger nicht mehr im Timerbereich gearbeitet aber ich glaub, dass Sleep(x) hier denkbar ungünstig ist.
Bau doch einfach ne boolsche Variable in dein Formular für den Timerstate ein. Wenn das Timerereignis aufgerufen wird, wird diese Variable als erstes ausgewertet. Ist sie False, wird im Timerereignis nichts ausgeführt, ist sie true wird der Code ausgeführt. Man nehme eine If-Anweisung dafür ;-) Du kannst die Variable jederzeit im Timerereignis verändern, wenn ein bestimmter State erfüllt ist.
Gruß
\\ Backslash \\
opfer.der.genauigkeit - Mo 04.04.05 11:30
Titel: Re: Prozedur unterbrechen[Wichtig!]
DelphiUnfreak hat folgendes geschrieben: |
Hallo Leute!
Ich muss im Informatikunterricht in der Schule ein Delphiprojekt machen und habe dabei ein kleines Problem. Ich habe nämlich eine Prozedur und einen Timer. Die Prozedur soll erst weiterlaufen, wenn die Variable 0 ist. Dabei komme ich auf den Timer. Im Timer wird die Variable verringert. Nun soll die Prozedur so lange anhalten, bis der Timer den "0-Wert" für die Variable liefert. Erst dann soll die Prozedur weitermachen.
Ich denke, dass das für euch Delphi-Profis keine Schwierigkeit ist und hoffe mir kann hier schnell jemand helfen. Dafür bedanke ich mich schon einmal im Vorraus! |
Es gibt Timer.Enabled, dann ruft der auf, was im Timer- Durchlauf definiert wurde.
Ansonsten hilft dir noch ein Loop.
Backslash - Mo 04.04.05 11:34
Perfekt, die Lösung ist sogar noch besser anstelle der Form-Globalen Variable.
DelphiUnfreak - Mo 04.04.05 11:37
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| procedure TForm2.Button1Click(Sender: TObject); var b,zu,erg,rest:integer; begin randomize; zu:=random(200); pfeil.start(zu); timer1.Enabled:=true;
erg:=pfeil.x div 50; rest:=pfeil.x mod 50; if (erg=0) or ((erg=1) and (rest=0)) then b:=1; ... end;
procedure TForm2.Timer1Timer(Sender: TObject); begin pfeil.va:=pfeil.va-0.5; anzeigen(pfeil); end;
procedure anzeigen(pfeil:tpfeil); begin pfeil.zeichnen(form2.canvas, form2.color); if pfeil.va<=0 then pfeil.va:=0; pfeil.x:=pfeil.x+round(pfeil.va); if pfeil.x>form2.ClientWidth then pfeil.x:=0; pfeil.zeichnen(form2.Canvas, pfeil.farbe); end; |
Moderiert von
raziel: Delphi-Tags hinzugefügt.
Delete - Mo 04.04.05 11:45
schonmal was von delphi-tags gehört, DelphiUnfreak? :wink:
opfer.der.genauigkeit - Mo 04.04.05 11:48
Also,
nach dem Timer nen loop, der auf z.B. Timer.Enabled = false prüft.
Bei wahr, durchlauf deines restlichen codes, oder der Timer prüft auf true.
Is ja egal.
z.B.
Delphi-Quelltext
1: 2: 3: 4: 5:
| Timer1.enabled := true;
while Timer1.Enabled do begin Application.ProcessMessages; end; |
Dazu sollte aber der Timer, irgendwann auch auf enabled = false gesetzt werden.
DelphiUnfreak - Mi 06.04.05 15:02
Was sind denn Delphi-Tags? Was ist ein Loop?
Was ist das:
Application.ProcessMessages;?
Moderiert von
raziel: Delphi-Tags hinzugefügt.
zemy - Mi 06.04.05 16:50
DelphiUnfreak hat folgendes geschrieben: |
Was sind denn Delphi-Tags? Was ist ein Loop?
Was ist das:Application.ProcessMessages;?
Moderiert von raziel: Delphi-Tags hinzugefügt. |
Delphi-Tags: siehe oben
Loop: ne Schleife (For, While, Repeat-until, habe ich eine vergessen?)
Application.ProcessMessages;: damit sagts du Delphi: Reagier auf Eingaben. Nützlich, wenn man in Schleifen zum Beispiel den Fortschrit anzeigen lassen will.
DelphiUnfreak - Mi 06.04.05 22:27
Danke, habs gepackt!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!