Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - try ... except
Mr.Lunis - Mi 04.02.04 00:39
Titel: try ... except
Wollte ein Programm schreiben zudem man die absprunghöhe beim fallschirmsprung angibt und dann die fallzeit berechnet wird bis man den fallschirm ziehen muss. diese fallhöhe liegt bei min 650 m. falls man eine kleinere zahl eingibt kommt immer ein blöder warnhinweis. ich möchte, dass sobald ein kleinerer wert als 650 eingegeben wird eine showmessage kommt.
ich hab delphi seit neuestem in der schule und bin deshalb noch nicht so gut. is bestimmt was popeliges was ich falsch gemacht hab. aber bitte um hilfe!!!!!!!!!
So siehts bei mir aus .............aber funzt nicht!!!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.BerechnenClick(Sender: TObject); var h,t:real; begin h:=StrToFloat(Absprunghoehe.Text); try t:=Sqrt(2*(h-650)/9.81); except on EInvalidOp do ShowMessage('Blablabla'); end; Sprungdauer.Text:=FloatToStr(t);
end; |
jetzt schon mal danke!!!!
Moderiert von
Peter Lustig: Delphi-Tags hinzugefügt und Doppelthread gelöscht
Raphael O. - Mi 04.02.04 00:45
wenn ichs richtig verstanden habe, dann solltest du anstatt dem try-except block einfach eine Überprüfung
Delphi-Quelltext
1:
| if t<650 then Showmessage('blabla'); |
ausreichen...
Christian S. - Mi 04.02.04 00:47
Hallo!
Erst einmal ein kleiner Hinweis:
Du musst das Syntaxhighlighting des Quelltextes nicht selbst machen. Umschließe Quelltext mit den Delphi-Tags und alles, was Du noch machen musst, sind die Einrückungen.
Nun zu Deinem Problem:
Für so etwas sollte man keine Exception benutzen. Wenn man weiß, wie ein Fehler auftritt, sollte man diese Möglichkeit vorher "sauber" abarbeiten. Hier wäre es also sinnvoller eine Abfrage nach dem Motto "if h < 650 then" zu machen. Aber natürlich bevor Du die Wurzel ziehst.
MfG
Peter
Mr.Lunis - Mi 04.02.04 00:58
Danke für die Tipps!
Stimmt! Es hat so geklappt!
Aber nur mal aus Neugierde wie hätte es denn mit try...except aussehen müssen?????????????
Danke und bis dann
Raphael O. - Mi 04.02.04 01:01
try...except ist nur dazu da, um "echte" Fehler abzufangen, wie zum Beispiel eine Division durch 0... da so etwas bei deinem Text nicht der fall ist kann man dein Problem damit nicht lösen...
hat eben ne andere Aufgabe ;)
Mr.Lunis - Mi 04.02.04 01:10
ichl ja nicht besserwisserisch sein oder nerven
aber.....
1. mein lehrer hat das mit try...except gemacht
2. is die wurzel einer negativen zahl ein schwerwiegender fehler genauso wie eine division durch null!
Bis denne
Christian S. - Mi 04.02.04 01:10
Hallo!
Prinzipiell sollte man Exceptions nur benutzen bei Fehlern, die man nicht voraussehen kann. Alles andere sollte man schon vorher ausschalten. Dies schließt in den allermeisten Fällen auch eine Divisioin durch Null ein.
MfG
Peter
//Edit: Eine Exception zu verwenden ist hier schlecht. Der Fehler kann vorausgesehen werden, also sollte man auch vorher dafür sorgen, dass erst gar keine Exception auftritt.
Raphael O. - Mi 04.02.04 01:14
| Mr.Lunis hat folgendes geschrieben: |
ichl ja nicht besserwisserisch sein oder nerven
aber.....
1. mein lehrer hat das mit try...except gemacht
2. is die wurzel einer negativen zahl ein schwerwiegender fehler genauso wie eine division durch null! |
ok, dann hast du recht, aber es ist wirklich ###zensiert### das mit einer exception zu machen ;)
vor allem, wenn es schon mit einer einfachen if ... then... Lösung funktioniert..
sag deinem Lehrer mal der soll sich schämen :!: :twisted:
Mr.Lunis - Mi 04.02.04 01:15
ich habs ja kapiert ich wollte ja auch nur einfach mal wissen wie es mit try except aussieht und ich weiß ja das es auch so geht!!!! Ganz sicher!!! auch wenn ichs anders besser machen kann. ich wollts ja nur wissen. nix für ungut!
Trotzdem danke für die hilfe.
Ciao
Raphael O. - Mi 04.02.04 01:26
war in keinster weise böse gemeint oder so, mein Beitrag :)
(habe deinen so aufgefasst, als ob du das so verstanden hättest... also sag ich auch mal "nix für ungut" ;) )
Delete - Mi 04.02.04 01:46
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| uses math;
procedure TForm1.Button1Click(Sender: TObject); var h, t: double; Code: Integer; resourcestring MsgCaption = 'Die letzten Worte des Fallschirmspringers'; MsgText = 'Die Wolke nehme ich noch mit...'; begin val(Edit1.Text, h, Code); if Code = 0 then begin t := Sqrt(2*(h-650)/9.81); if t < 650.0 then Messagebox(Handle, PChar(MsgText), PChar(MsgCaption), MB_ICONWARNING) else Edit1.Text := Format('%.2n', [t]); end; end; |
Christian S. - Mi 04.02.04 10:36
Öhm. Den Code verstehe ich nicht ganz. Wieso fragst Du ab, ob t kleiner 650 ist. Und selbst wenn man h abfragt, sollte man das vor der Wurzel machen, oder?
Delete - Mi 04.02.04 12:39
Shit. Ich habe mich auf die Syntax konzentriert.
So sollte es gehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| uses math;
procedure TForm1.Button1Click(Sender: TObject); var h, t: double; Code: Integer; resourcestring MsgCaption = 'Die letzten Worte des Fallschirmspringers'; MsgText = 'Die Wolke nehme ich noch mit...'; begin val(Edit1.Text, h, Code); if Code = 0 then begin if h < 650.0 then Messagebox(Handle, PChar(MsgText), PChar(MsgCaption), MB_ICONWARNING) else begin t := Sqrt(2*(h-650)/9.81); Edit1.Text := Format('%.2n', [t]); end; end; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!