![]() |
Funktion abbrechen
Mal wieder eine grundlegende Frage.
Eine Schleife kann man mit
Delphi-Quellcode:
abwürgen. Gibt es derartiges auch für eine Funktion/Prozedur? Allerdings stellt sich mir dann die Frage, was die Funktion/Prozedur dann an Werten zurückliefert, oder auch nicht.
break;
Mir fällt gerade ein das mein Info-Dozent was von schlechtem Programmierstil mit "got-to"-Anweisungen erzählt hat. Wäre das vielleicht die lösung meines Problems? Habe damit nie gearbeitet, nie arbeiten dürfen :) Grüße |
Re: Funktion abbrechen
Delphi-Quellcode:
Aber meisstens kann man das umgehen
Exit;
|
Re: Funktion abbrechen
Zitat:
|
Re: Funktion abbrechen
Zitat:
Ich hab eine Funktion die 8 IF-THEN-ELSE-Verschachtelungen beinhaltet. Wäre also schon sinnvoll zwischendrin abzubrechen, weil ja sonst alle kommenden Abfragen auch abgearbeitet werden. Das ist dann allerdings nicht mehr notwendig. Danke für die Hilfe :) |
Re: Funktion abbrechen
Oft kann man die Bedingungen so festlegen, dass man auf Exit o.ä. verzichten kann. Aber natürlich nicht immer.
|
Re: Funktion abbrechen
Hast du ein kurzes Beispiel dafür parat?
Habe da an eine Umformung zu einer While-Do-Schleife gedacht? Meinst du das? |
Re: Funktion abbrechen
Z.B. Wie sehen den die Schleifen aus?
|
Re: Funktion abbrechen
Naja es handelt sich um eine Strinüberprüfung, ob er einer IP-Formatierung gerecht wird :)
Delphi-Quellcode:
Ist allerdings noch nicht ganz fertig. Würde gern noch den String darauf prüfen wollen, ob er andere Zeichen als Zahlen von 0..9 oder "." enthält. Ansonsten muss noch eine Überprüfung rein, ob wirklich nur 3 Punkte im String vorhanden sind. Das ist nicht allzu schwierig. Ein Anstaz für mein erstes Problem habe ich allerdings noch nicht gefunden. Bin halt grad am Code schreiben :)
//IP formatierung überprüfen
function IP_Prove(var IP:string):boolean; var DotPos1, DotPos2, DotPos3, StrL, SubStrL:integer; SubStr:string; begin IP:=StringReplace(IP, ' ', '', [rfReplaceAll]); if IP='' then Result:=false else begin StrL:=Length(IP); //ShowMessage(inttostr(StrL)); //zum testen DotPos1:=Pos('.', IP); //Ermittlung 1. Punkt //ShowMessage(inttostr(DotPos1)); //zum testen SubStr:=Copy(IP, 1, DotPos1-1); //Ermittlung 1. Oktett //ShowMessage(SubStr); //zum testen SubStrL:=Length(SubStr); //ShowMessage(SubStrL); //zum testen if ((SubStrL<1) or (SubStrL>3))then begin Result:=false; MessageDlg('Fehler', '1. Oktett muss aus mind. 1 bzw. darf aus max. 3 Zeichen bestehen!', mtError, [mbOk], 0); Exit; end else begin if ((strtoint(SubStr)<0) or (strtoint(SubStr)>255)) then begin Result:=false; MessageDlg('Fehler', '1. Oktett darf nur einen numerischen Wert von 0 bis 255 annehmen!', mtError, [mbOk], 0); Exit; end else begin DotPos2:=PosEx('.', IP, DotPos1+1); //Ermittlung 2. Punkt //ShowMessage(inttostr(DotPos2)); //zum testen SubStr:=Copy(IP, DotPos1+1, DotPos2-DotPos1-1); //Ermittlung 2. Oktett //ShowMessage(SubStr); //zum testen SubStrL:=Length(SubStr); //ShowMessage(SubStrL); //zum testen if ((SubStrL<1) or (SubStrL>3))then begin Result:=false; MessageDlg('Fehler', '2. Oktett muss aus mind. 1 bzw. darf aus max. 3 Zeichen bestehen!', mtError, [mbOk], 0); Exit; end else begin if ((strtoint(SubStr)<0) or (strtoint(SubStr)>255)) then begin Result:=false; MessageDlg('Fehler', '2. Oktett darf nur einen numerischen Wert von 0 bis 255 annehmen!', mtError, [mbOk], 0); Exit; end else begin //ShowMessage(SubStr); //zum testen DotPos3:=PosEx('.', IP, DotPos2+1); //Ermittlung 3. Punkt //ShowMessage(inttostr(DotPos3)); //zum testen SubStr:=Copy(IP, DotPos2+1, DotPos3-DotPos2-1); //Ermittlung 3. Oktett //ShowMessage(SubStr); //zum testen SubStrL:=Length(SubStr); //ShowMessage(SubStrL); //zum testen if ((SubStrL<1) or (SubStrL>3))then begin Result:=false; MessageDlg('Fehler', '3. Oktett muss aus mind. 1 bzw. darf aus max. 3 Zeichen bestehen!', mtError, [mbOk], 0); Exit; end else begin if ((strtoint(SubStr)<0) or (strtoint(SubStr)>255)) then begin Result:=false; MessageDlg('Fehler', '3. Oktett darf nur einen numerischen Wert von 0 bis 255 annehmen!', mtError, [mbOk], 0); Exit; end else begin //ShowMessage(SubStr); //zum testen SubStr:=Copy(IP, DotPos3+1, StrL); //Ermittlung 4. Oktett //ShowMessage(SubStr); //zum testen SubStrL:=Length(SubStr); //ShowMessage(SubStrL); //zum testen if ((SubStrL<1) or (SubStrL>3))then begin Result:=false; MessageDlg('Fehler', '4. Oktett muss aus mind. 1 bzw. darf aus max. 3 Zeichen bestehen!', mtError, [mbOk], 0); Exit; end else begin if ((strtoint(SubStr)<0) or (strtoint(SubStr)>255)) then begin Result:=false; MessageDlg('Fehler', '4. Oktett darf nur einen numerischen Wert von 0 bis 255 annehmen!', mtError, [mbOk], 0); Exit; end; end; end; end; end; end; end; end; end; end; |
Re: Funktion abbrechen
Hallo,
nur so als Hinweis: Was spricht gegen diesen Source: ![]() Grüße |
Re: Funktion abbrechen
Rein garnichts :) Naja wenn man in den Foren nicht angemeldet ist bzw. sie nicht kennt, dann findet man den Code auch nicht so einfach oder? :)
Naja meiner funktioniert auch! hehe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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