AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ausgang aus repeat..until-Schleife

Ein Thema von Pelzini · begonnen am 22. Sep 2005 · letzter Beitrag vom 22. Sep 2005
Antwort Antwort
Pelzini

Registriert seit: 20. Sep 2005
4 Beiträge
 
Delphi 6 Professional
 
#1

Ausgang aus repeat..until-Schleife

  Alt 22. Sep 2005, 09:16
Hallo,

gibt es eine (einfache) Möglichkeit, aus einer "repeat..until Bedingung=true"-Struktur in einer Prozedur auszusteigen, wenn Bedingung=true außerhalb der Struktur gesetzt werden soll, z.B. durch Klicken eines Buttons? Das ist vielleicht eine primitive Frage, aber ich habe schon 5 dicke Delphi-Bücher gewälzt, ohne dazu etwas zu finden. Ich stelle mit vor, dass innerhalb der Schleife irgendwie der Status eines "Stopp"-Buttons abgefragt werden müsste.

Pelzini
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Ausgang aus repeat..until-Schleife

  Alt 22. Sep 2005, 09:20
In so einem Fall bleibt dir kaum etwas anderes übrig, als eine globale Variable zu belegen und in der Schleife abzufragen. Evtl. solltest du in der Schleife Application.Processmessages aufrufen, damit du überhaupt in der Lage bist, einen Button zu drücken.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
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
Pelzini

Registriert seit: 20. Sep 2005
4 Beiträge
 
Delphi 6 Professional
 
#4

Re: Ausgang aus repeat..until-Schleife

  Alt 22. Sep 2005, 09:47
Vielen Dank, dein Code (Phoenix) hilft mir schon weiter. Ich glaube ich hab's begriffen.

Pelzini
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz