Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#3

Re: Ausgang aus repeat..until-Schleife

  Alt 22. Sep 2005, 09:29
Erm.

Ich weiss nicht genau worauf Du hinaus willst. Aber schaun wer mal:

1.) Jede Schleife lässt sich durch ein break abbrechen.

2.) Du musst die Schleife nicht unterbrechen, wenn Du einen Status abfragen willst. Beispiel:

Du brauchst ein Formular, 2 Buttons (einmal btnStart und einmal btnStop) und ein Label (lblZahl).
In der Schleife wird eine Zahl hochgezählt und durch den btnStopClick beendet.


Delphi-Quellcode:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm3 = class(TForm)
    lblZahl: TLabel;
    btnStop: TButton;
    btnStart: TButton;
    procedure btnStartClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnStopClick(Sender: TObject);
  private
    ButtonPressed: Boolean;
    counter: integer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);
begin
  Buttonpressed := false;
  counter := 0;
end;

procedure TForm3.btnStopClick(Sender: TObject);
begin
  Buttonpressed := true;
end;

procedure TForm3.btnStartClick(Sender: TObject);
begin
  repeat
    if counter > 2147483646 then counter := 0;
    counter := counter + 1;
    lblZahl.Caption := IntToStr(counter);
    Application.ProcessMessages; // der hier ist wichtig
  until buttonpressed;

  buttonpressed := false;
end;

end.
Edit: Man sollte ein Delphi-Startag nicht mit /code beenden :-/
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat