![]() |
for-Schleife -Abbruch
Hallo,
ich möchte in einer for-Schleife gewisse Durchläufe überspringen: Das könnte ich so machen:
Delphi-Quellcode:
Allerdings habe ich viele if-Abfragen, die ineinander verschachtelt sind, doch ich kann sie nicht mit einem AND verknüpfen, da gewisse innere nicht abgefragt werden dürfen, wenn die äußere(n) FALSE liefert.
for x:=a to b do begin
if f(x)>100 then begin ... end; end; Ich möchte soetwas wie:
Delphi-Quellcode:
Das wäre besser, doch bei mir wird die komplette Schleife beendet. Ich möchte aber nur gewisse Durchläufe überspringen.
for x:=a to b do begin
if not (f(x)>100) then Exit; ... end; Bitte um Hilfe, Thomas |
AW: for-Schleife -Abbruch
Zitat:
Delphi-Quellcode:
Gruß, Chris
for x:=a to b do begin
if not (f(x)>100) then continue; ... end; |
AW: for-Schleife -Abbruch
|
AW: for-Schleife -Abbruch
Zitat:
Sobald eine Bedingungen in der if-Abfrage fehlschlägt, werden alle folgenden nicht mehr geprüft. Kannst also schon Schachteln! Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin if GetAFalseBooleanValue and GetATrueBooleanValue then OutputDebugString(PWideChar('Wird niemals erreicht')); end; function TForm1.GetAFalseBooleanValue: Boolean; begin Result := False; OutputDebugString(PWideChar('False - Siehtste mich???')); end; function TForm1.GetATrueBooleanValue: Boolean; begin Result := True; OutputDebugString(PWideChar('True - Siehtste mich???')); end; |
AW: for-Schleife -Abbruch
Ach, so einfach :-D
Ich wusste doch, dass es einen Befehl dafür gibt ^^ Vielen Dank - so sieht mein Programm viel ordentlicher aus ! Thomas Edit: Zum "Schachteln" habe ich mich nicht so deutlich ausgedrückt, ich meinte soetwas:
Delphi-Quellcode:
Allerdings benütigt die Funktion "qx" schon einen numerischen nichtleeren String "a", ansonsten Fehler.
if (a<>'') and (isnumeric(a)) and qx(a) then begin
s:= a... end; Daher muss ich machen:
Delphi-Quellcode:
so in der Art...
if (a<>'') and isnumeric(a) then begin
if qx(a) then s:=... end; |
AW: for-Schleife -Abbruch
Zitat:
Bitte mein Beispiel mal ausprobieren! Für dein Beispiel: Sobald (a<>'') gleich false liefert, werden alle anderen Bedingungen die zwischen if und then stehen nicht abgefragt! EDIT: Würde die Prüfung sowieso in die IsNumeric() Funktion implementieren! |
AW: for-Schleife -Abbruch
Zitat:
Gruß, Chris |
AW: for-Schleife -Abbruch
Zitat:
|
AW: for-Schleife -Abbruch
Warum das Ganze nicht übersichtlich verpacken?
Delphi-Quellcode:
Function OperationIstLegal(KandidatenIndex : Integer) : Boolean;
Begin Result := False; If KandidatIstLeer(KandidatenIndex) Then Exit; If Not KandidatIstNumerisch(KandidatenIndex) Then Exit; If KandidatHatRoteHaare(KandidatenIndex) And HeuteIstDienstag() Then Exit; // Hier beliebig viele Prüfungen einfügen, anfügen, erklären usw. // // Und zum Schluss Result := True; End; Procedure DieEigentlicheSchleife; Var i : Integer; Begin For i:=1 to VerdammtHoheZahl do If OperationIstLegal(i) then FuehreOperationAus(i); End; |
AW: for-Schleife -Abbruch
Erst schreibst du übersichtlich und dann widersprichst du dir indem du Exit in dieser Art und Weise benutzt... ;-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz