![]() |
Prozedur abbrechen
Hallo!
Kann mir jemand helfen? Ich bin ein Delphi-Anfänger und möchte in einer try+except -Methode die prozedur abbrechen. gibt es dafür einen Befehl? |
AW: Prozedur abbrechen
Hm wie bitte?
Wenn eine Exception ausgelöst wird kannst du diese im except-Teil von try..except.. verarbeiten. Nach dem auslösen einer Exception ist die Prozedur quasi abgebrochen.
Delphi-Quellcode:
try
Mach Irgendwas except on Exception do Mach Irgendwas end; |
AW: Prozedur abbrechen
Ist da nicht exit besser! als try-except zu entfremden! um die procedure evtl nach einem ergebnis zu verlassen?
Gruss alfold |
AW: Prozedur abbrechen
Seine Frage bezieht sich nicht auf "mit try..except" sondern "in einer try..except" !
|
AW: Prozedur abbrechen
kommt doch auch darauf an. Wenn seine Procedure ne Exception Produziert, muss man sie auch behandeln und dann evtl mit exit raus gehen! Ob das aber dann richtig conform ist, hängt sicherlich davon ab was nach except-end noch alles kommen soll?
Gruss alfold |
AW: Prozedur abbrechen
Zitat:
Delphi-Quellcode:
Da muss man nirgends mehr "rausgehen", selbst wenn nach dem Except-Block noch Code folgen sollte. Aber wenn noch Code folgt, wäre das schlechter Programmierstil, weil ich dann die Fehlerbehandlung wieder über all im Code verteilt hätte, was man ja gerade mit try-except versucht zu vermeiden.
procedure Foobar;
begin try ...; ...; ...; except ...; ...; end; end; |
AW: Prozedur abbrechen
@Luckie ich bezog dies auf:
Zitat:
Gruss alfold |
AW: Prozedur abbrechen
was muss ich dann bei exeption eingeben?
also, ich habe mal die stelle kopiert
Delphi-Quellcode:
nach showmessage soll die prozedur abgebrochen werden.
//Variablen zuweisen:
try a := StrToInt(Edbr.text); b := StrToInt(Edh.text); c := StrToInt(Edt.text); except showmessage ('Bitte überprüfen sie ihre Eingaben!'); end; exit funktioniert nicht. |
AW: Prozedur abbrechen
Was spielt das für eine Rolle, ob er Anfänger ist oder nicht? Ich habe mich auf den von mir zitierten Teil deines Beitrages bezogen. Und die Aussage ist wohl nicht vom Kenntnisstand des Fragestellers abhängig. ;)
Kommt denn nach dem try-except-Block noch Code? Zeig uns doch mal die ganze Prozedur. |
AW: Prozedur abbrechen
In diesem Fall besser TryStrToInt() oder StrToIntDef() verwenden.
|
AW: Prozedur abbrechen
Delphi-Quellcode:
procedure TForm1.BtqeClick(Sender: TObject);
var a, b, c, d, ax, ay, bx, by, cx, cy, dx, dy, ex, ey, fx, fy, gx, gy, hx, hy : integer; begin //Variablen zuweisen: try a := StrToInt(Edbr.text); b := StrToInt(Edh.text); c := StrToInt(Edt.text); except showmessage ('Bitte überprüfen sie ihre Eingaben!'); end; d := round(sqrt((c/2)*(c/2)/2)); ax := 10; ay := 10 + d + b; bx := 10 + a; by := 10 + d + b; cx := 10 + a; cy := 10 + d; dx := 10; dy := 10 + d; ex := 10 + d; ey := 10 + b; fx := 10 + a + d; fy := 10 + b; gx := 10 + a + d; gy := 10; hx := 10 + d; hy := 10; //wenn der quader zu groß oder zu klein ist: if (d+b>500) or (d+a>700) then showmessage ('Geben sie bitte kleinere Werte ein!'); if a or b or c < 20 then showmessage ('Geben sie bitte größere Werte ein!'); //Zeichnen: Repaint; canvas.Pen.Color := clGray; canvas.Pen.Width := 1; canvas.MoveTo(ex,ey); canvas.lineTo(ax,ay); canvas.MoveTo(ex,ey); canvas.lineTo(fx,fy); canvas.moveTo(ex,ey); canvas.lineTo(hx,hy); canvas.pen.color := clBlack; canvas.pen.width := 2; canvas.moveTo(dx,dy); canvas.lineTo(cx,cy); canvas.lineTo(bx,by); canvas.lineTo(ax,ay); canvas.lineTo(dx,dy); canvas.lineTo(hx,hy); canvas.lineTo(gx,gy); canvas.lineTo(fx,fy); canvas.LineTo(bx,by); canvas.MoveTo(cx,cy); canvas.lineTo(gx,gy); //oberflächeninhalt/Volumen berechen: PV.Caption:=IntTOStr (a*b*c); PO.Caption:=IntToStr (a*b*2+a*c*2+b*c*2); //Drehen-Button sichtbar machen: Btdrehen.Visible := true; end; |
AW: Prozedur abbrechen
Zitat:
Und geahnt das es so ist:zwinker: |
AW: Prozedur abbrechen
Bitte verwende zukünftg Code-Tags. In diesem Fall Delphi-Tags.
Einfach Code markieren und Delphi-Symbol in der Toolbar des erweiterten Editors anklicken |
AW: Prozedur abbrechen
Da liegt aber einiges im Argen, wenn ich den Code so sehe. Erstmal hätte ich die Eingabe, das Zeichnen und die Berechnungen in separate Routinen ausgelagert. Da die Werte aber in allen Routinen gebraucht werden, drängt sich hier schon eine Klasse von ganz alleine auf. Mit den Methoden: CheckInput, PaintCube, CalcVolume, CalcSurface.
Wenn es so bleiben soll (Dann aber bitte den Code niemanden zeigen, der was davon versteht.), dann packe den ganzen Code in den try-exceptblock. |
AW: Prozedur abbrechen
Von mir auch noch ne Hilfe.
Trenne Daten/berechnungen von VCL- in diesem Fall canvas. Wenn Deine Berechnungen oder Eingaben nicht stimmen, brauchst du auch nicht zeichnen und somit auch nicht die Procedure vorzeitig verlassen! Gruss alfold |
AW: Prozedur abbrechen
habe das problem gelöst! vielen dank für eure hilfe!:-D
|
AW: Prozedur abbrechen
Verrätst du uns auch wie?
|
AW: Prozedur abbrechen
vermute mal :wink:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 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 by Thomas Breitkreuz