| Autor |
Beitrag |
Mr.Lunis
Hält's aus hier
Beiträge: 4
|
Verfasst: Mi 04.02.04 00:39
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.
      
Beiträge: 1596
VS 2013
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Mr.Lunis 
Hält's aus hier
Beiträge: 4
|
Verfasst: 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.
      
Beiträge: 1596
VS 2013
|
Verfasst: 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 
Hält's aus hier
Beiträge: 4
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Raphael O.
      
Beiträge: 1596
VS 2013
|
Verfasst: 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 
|
|
Mr.Lunis 
Hält's aus hier
Beiträge: 4
|
Verfasst: 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.
      
Beiträge: 1596
VS 2013
|
Verfasst: 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"  )
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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; |
|
|