Ergebnis 1 bis 7 von 7
  1. #1
    DateMake Dialer
    Registriert seit
    13.07.2008
    Beiträge
    102

    Standard [F] Programm hängt sich auf Grund einer Schleife auf

    hi und zwar habe ich mich gerade mal dran gesetzt und wollte etwas ganz banales machen, da ich noch ein voll noob bin.

    Ich hatte vor, eine art Uhr zu machen.

    Wenn man auf einen Button klickt, sollte in einem label die zahlen 1-59 ersteinen.
    Aber nicht auf einmal, sondern im Sekundentakt.

    Das ist meinen Code, den ich gemacht habe:

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    repeat
      Label1.Caption :=IntToStr(x + 1);
    until x=59;
    if x=59 then
    exit;
    end;
    
    end.

    Doch sobald ich das dann starte, hängt sich das gemachte auf.
    Dann muss ich immer erst auf Pause machen, dann den Code ein wenig umschreiben, dann wieder erstellen damit ich dass dann schließen kann.

    Aber warum passiert das?
    Schickt mehr Geld, dann schick ich mehr Krämmpel

  2. #2
    Gesperrt
    Registriert seit
    09.12.2006
    Beiträge
    946

    Standard

    Lösungen :

    Einen Timer benutzen und das repeat weglassen.
    oder
    Code:
    Label1.Caption := TimeToStr(Now);
    Ansonsten macht er keine Pause bis zum Ende der Schleife

  3. #3
    NoClose Wurm Avatar von bayer
    Registriert seit
    31.03.2007
    Beiträge
    185

    Standard

    Um Gottes Willen, was ist das denn fürn Code? xD

    Wird das wirklich kompiliert? O_o

    Du solltest darauf achten, Variablen erstmal zu erstellen, bevor du die benutzt (var x: integer; und so). Und dann solltest du darauf achten, dass du diesen Variablen den richtigen Wert am Anfang ersteinmal gibst (sowas wie x = 0 Das ist wahrscheinlich auch der Grund, warum dein Programm abschmiert. X hat vllt nen Startwert über 59 und dann wird jetzt solange repeatet, bis x wieder 59 wird, wirds aber nicht :O --> Endlosschleife produziert

    Weiterhin kannst du nicht davon ausgehen, dass der diese Repeat-Schleife im Sekundentakt durchgeht. Das tut er nämlich nicht.

    Schau dir am besten nochmal die Grundlagen an

    Ich liebe mein Beil!

  4. #4
    DateMake Dialer
    Registriert seit
    13.07.2008
    Beiträge
    102

    Standard

    Ich habe nicht den ganzen code kopiert^^, sry.

    habe natürlich erstmal die variable x deklariert.
    Nur nicht mir dem startwert 1.

    Timer habe ich zwar eingefügt, aber ich weiß0 nicht, wie man den in verbindung bringt mit der schleife.

    Da is naämlich das problem. ich habe garkeine ahnung, wie ich so sachen in zusammenhang bringe.

    das mit dem label1.Caption wuste ich nur, da ich es mal in nem tut gesehen habe.

    Aber was muss ich hin schreiben, damit der Timer bei der scheife immer im sekundentackt arbeitet.

    Habe den auf 1000 millisekunden gestellt.
    Aber was mus sich nun schreiben, damit der timer weiß, das sich das auf die schleife beziehen soll?
    Schickt mehr Geld, dann schick ich mehr Krämmpel

  5. #5
    NoClose Wurm Avatar von bayer
    Registriert seit
    31.03.2007
    Beiträge
    185

    Standard

    Du hast den Timer ja auf deiner Form. Da kannst du entweder doppelt draufklicken, dann kommst du in das Quelltextfenster, in ein neues "Gerüst". Alles, was da zwischen begin und end steht wird jede sekunde ausgeführt, wenn der timer auf 1000 steht.

    So siehts aus:

    procedure TForm1.Timer1Timer(Sender: TObject);

    begin

    // Hier steht dein Zeug

    end;


    Da brauchst du auch keine Schleife mehr, weil der Timer ja jede Sekunde das ausführt, was du da reinschreibst.

    Weitere Events von den Komponenten findest du im Objektinspektor unter Events

    Ich liebe mein Beil!

  6. #6
    DateMake Dialer
    Registriert seit
    13.07.2008
    Beiträge
    102

    Standard

    cool, vielen dank für eure hilfe
    Schickt mehr Geld, dann schick ich mehr Krämmpel

  7. #7
    Stanley Jobson Avatar von K1ngC0bra
    Registriert seit
    26.08.2007
    Beiträge
    650

    Standard

    Nächstes Mal halte dich an die Stickies (Vor dem Posten lesen) ansonstens gibt es gelb. Danke!

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •