Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eine Schleife Abbrechen.... (https://www.delphipraxis.net/72114-eine-schleife-abbrechen.html)

Green 25. Jun 2006 23:56


Eine Schleife Abbrechen....
 
wie kann ich wenn ich eine Schleife hab, selbige über eine checkbox beenden.
während die Schleife läuft reagiert ja auch alles auf der form nit, d.h. wenn ich die Checkbox drück passiert nüx,
hab folgenden Lösungsansatz, funzt aba nit:
Delphi-Quellcode:
Form1.CheckBox1.Update;                
if Form1.CheckBox1.Checked then                  
  Exit;

ferby 25. Jun 2006 23:59

Re: Eine Schleife Abbrechen....
 
Hallo,

wie wärs wenn du die ganze Schleife postest?

Wenn du in deine Schleife:

Delphi-Quellcode:
Application.ProcessMessages;
einbaus, dann bleibt die Form (Benutzeroberfläche) nicht stecken, bzw. reagiert auf Button Klicks und so.....

Michael Habbe 26. Jun 2006 00:06

Re: Eine Schleife Abbrechen....
 
Hi,

hier der Code:

Delphi-Quellcode:
procedure DoSomething;
var
  i: Integer;
begin
  for i := 1 to 1000000000000000000000000000 do
  begin
    DoSomethingMore;
    Application.ProcessMessages;
    if CheckBox1.Checked then
      Break;
  end;
end;

omata 26. Jun 2006 00:11

Re: Eine Schleife Abbrechen....
 
Eine Schleife, die man abbrechen möchte ist niemals eine FOR-Schleife. Dafür gibt es REPEAT und WHILE. Und das 1000000000000000000000000000 bei einer Integervariable ist wohl auch nicht möglich.

Also...
Delphi-Quellcode:
procedure DoSomething;
begin
  repeat
    DoSomethingMore;
    Application.ProcessMessages;
  until CheckBox1.Checked;
end;
oder noch besser...

Delphi-Quellcode:
procedure DoSomething;
begin
  while not CheckBox1.Checked do begin
    DoSomethingMore;
    Application.ProcessMessages;
  end;
end;

Gruss
Thorsten

Luckie 26. Jun 2006 00:17

Re: Eine Schleife Abbrechen....
 
Zitat:

Zitat von omata
Eine Schleife, die man abbrechen möchte ist niemals eine FOR-Schleife. Dafür gibt es REPEAT und WHILE.

Gutes Argument. :thumb:

Zitat:

Und das 1000000000000000000000000000 bei einer Integervariable ist wohl auch nicht möglich.
War wohl nur ein Beispiel. ;)

Green 26. Jun 2006 09:36

Re: Eine Schleife Abbrechen....
 
Ich wollte aber eine For-schleife nehmen, weil die Schleife nur eine bestimmte Anzahl durchgegangen werden soll, aber eine Möglichkeit zum abbrechen haben soll. Also brauch ich ja wohl eine Forschleife oder bin ich jetzt vollkkommen blöd?

xaromz 26. Jun 2006 09:44

Re: Eine Schleife Abbrechen....
 
Hallo,
Zitat:

Zitat von Green
Ich wollte aber eine For-schleife nehmen, weil die Schleife nur eine bestimmte Anzahl durchgegangen werden soll, aber eine Möglichkeit zum abbrechen haben soll. Also brauch ich ja wohl eine Forschleife oder bin ich jetzt vollkkommen blöd?

Sowas kann man immer anders lösen. Ich bin zwar kein Freund von "Break ist böse", aber hier mal ein Ansatz:
Delphi-Quellcode:
C := 0;
while (C < 10) and (not CheckBox1.Checked) do
begin
  TuIrgendwas;
  Application.ProcessMessages;
  Inc(C);
end;
bzw.
Delphi-Quellcode:
C := 0;
repeat
  TuIrgendwas;
  Application.ProcessMessages;
  Inc(C);
until (C = 10) or CheckBox1.Checked;
Hier läuft die Schleife zehn mal durch oder wird vorher abgebrochen.

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 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