[Delphi] Countdown + Sleep (merkwürdiges Problem)

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von -idur-, 13. Mai 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 13. Mai 2007
    Countdown + Sleep (merkwürdiges Problem)

    Moin,

    bin grad am lernen für die Informarik-Arbeit und bin auf ein seltsames Problem gestoßen. Ich wollte mir nen Countdown programmieren, der mit Canvas.TextOut jede Sekunde eine Zahl hinschreibt:

    Also, hab ich folgendes gemacht:

    Code:
    procedure TForm1.FormPaint(Sender: TObject);
    var
     i: integer;
    begin
    for i:=10 downto 0 do
     begin
     canvas.rectangle(0,0,clientwidth,clientheight);
     canvas.textout(clientwidth div 2,clientheight div 2,inttostr(i));
     sleep(1000);
     end;
    end;
    
    Jetzt das merwürdige: Wenn ich das Programm starte, wartet es 10 Sekunden lang und schreib dann ne 0 hin ?( ?( ?(

    hä?^^

    Irgendwie is das voll strange^^

    Weiß einer wieso das Programm so ein Müll macht, weil eigentlich soll es ja nach jeder ausgabe ne sekunde warten und nich gleich am anfang 10?^^

    Gruß
     
  2. 13. Mai 2007
    AW: Countdown + Sleep (merkwürdiges Problem)

    Vor sleep gehört
    Code:
    Application.ProcessMessages;
    
    Gruß
     
  3. 13. Mai 2007
    AW: Countdown + Sleep (merkwürdiges Problem)

    ok, jetzt macht er schonma was, aber:

    jetzt zählt er irgendwie ganz komisch runter, zum beispiel grade eben: 9,8,7,5,3,1,0

    trotzdem danke!
    bewertung is raus

    gruß


    //edit: jetzt grade hat es richtig runtergezählt ?( seltsam...
     
  4. 13. Mai 2007
    AW: Countdown + Sleep (merkwürdiges Problem)

    entweder Application.ProcessMessages; oder du baust Threads in dein Programm ein.
    Müsste beides funktionieren:]
     
  5. 13. Mai 2007
    AW: Countdown + Sleep (merkwürdiges Problem)

    hmm ok...

    muss vor sleep immer ein Application.ProcessMessages; und vor allem warum?

    greetz

    bewertung is raus!
     
  6. 13. Mai 2007
    AW: Countdown + Sleep (merkwürdiges Problem)

    Ja, es muss vor sleep grundsätzlich Application.ProcessMessages; stehen.
    Denn eine Applikation sammelt erst alle "Messages" die das Programm bewirkt und wenn nichts mehr ansteht, gibt es auch etwas aus. Sleep hält den Verlauf des Programms an. Aber da es ja eigentlich noch nicht fertig ist, gibt die Applikation auch nichts aus. Application.ProcessMessages veranlast alle "Messages" bis dato zu verarbeiten und auch etwas auszugeben.

    Klingt sehr verwirrend - ich bin halt schlecht in Erklären.
    Google einfach mal danach, vielleicht hilft dir das mehr, als mein Rumgestammel.
     
  7. 13. Mai 2007
    AW: Countdown + Sleep (merkwürdiges Problem)

    hmm ok,
    habs, denk ich mal, verstanden!

    vielen dank!

    ich close dann mal! greetz
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.