Autor Beitrag
Mr.Lunis
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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!!!


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.BerechnenClick(Sender: TObject);
var h,t:real;                           {h=Absprunghoehe
                                                        t=Sprungdauer}

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 user profile iconPeter Lustig: Delphi-Tags hinzugefügt und Doppelthread gelöscht
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mi 04.02.04 00:45 
wenn ichs richtig verstanden habe, dann solltest du anstatt dem try-except block einfach eine Überprüfung
ausblenden Delphi-Quelltext
1:
if t<650 then Showmessage('blabla');					

ausreichen...
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: 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



BeitragVerfasst: Mi 04.02.04 01:46 
ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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



BeitragVerfasst: Mi 04.02.04 12:39 
Shit. Ich habe mich auf die Syntax konzentriert.

So sollte es gehen:
ausblenden 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;