Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Prozedur abbrechen (https://www.delphipraxis.net/159077-prozedur-abbrechen.html)

delphimiri 13. Mär 2011 15:02

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;

alfold 13. Mär 2011 15:06

AW: Prozedur abbrechen
 
Zitat:

Zitat von alfold (Beitrag 1088088)
...und dann evtl mit exit raus gehen! Ob das aber dann richtig conform ist,....

Hab ich doch geschrieben @Luckie :cry:

Und geahnt das es so ist:zwinker:

mkinzler 13. Mär 2011 15:07

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

Luckie 13. Mär 2011 15:12

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.

alfold 13. Mär 2011 15:22

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

delphimiri 13. Mär 2011 15:38

AW: Prozedur abbrechen
 
habe das problem gelöst! vielen dank für eure hilfe!:-D

Luckie 13. Mär 2011 15:52

AW: Prozedur abbrechen
 
Verrätst du uns auch wie?

alfold 13. Mär 2011 18:43

AW: Prozedur abbrechen
 
vermute mal :wink:
Zitat:

....dann packe den ganzen Code in den try-exceptblock.
alfold


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr.
Seite 2 von 2     12   

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