Autor |
Beitrag |
DelphiUnfreak
Hält's aus hier
Beiträge: 10
|
Verfasst: Mo 04.04.05 11:21
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
      
Beiträge: 202
WIN XP
Delphi 5 Ent, Delphi 2005 Prof
|
Verfasst: 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
      
Beiträge: 754
Erhaltene Danke: 1
|
Verfasst: 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.
_________________ Stellen Sie sich bitte Zirkusmusik vor.
|
|
Backslash
      
Beiträge: 202
WIN XP
Delphi 5 Ent, Delphi 2005 Prof
|
Verfasst: Mo 04.04.05 11:34
Perfekt, die Lösung ist sogar noch besser anstelle der Form-Globalen Variable.
|
|
DelphiUnfreak 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mo 04.04.05 11:37
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.
|
|
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 04.04.05 11:45
schonmal was von delphi-tags gehört, DelphiUnfreak? 
|
|
opfer.der.genauigkeit
      
Beiträge: 754
Erhaltene Danke: 1
|
Verfasst: 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.
_________________ Stellen Sie sich bitte Zirkusmusik vor.
|
|
DelphiUnfreak 
Hält's aus hier
Beiträge: 10
|
Verfasst: 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.
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Mi 06.04.05 15:54
DelphiUnfreak hat folgendes geschrieben: | Was sind denn Delphi-Tags? |
Siehe auch unsere hervorragende Delphi-Forum.de Hilfe 
_________________ JSXGraph
|
|
zemy
      
Beiträge: 207
Win XP Prof.
D7
|
Verfasst: 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.
_________________ LifeIsToShortToThinkAboutTheShortness
|
|
DelphiUnfreak 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 06.04.05 22:27
|
|