Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Floating Point error


drsnoop - Fr 10.10.03 19:09
Titel: Floating Point error
hab ein problem mit folgender prozedur:

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:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
procedure TForm1.b_berechnenClick(Sender: TObject);
 var radius1, radius2, hoehe, seite, volumen, oberfl : extended;

begin
  if (tf_radius1.text = ''or
     (tf_radius2.text = ''or
     (tf_hoehe.text = '')   or
     (tf_seite.text = '')
     then showmessage('Alle Felder müssen ausgefüllt sein!')

     else
       if (strtofloat(tf_radius1.text) <= 0or
          (strtofloat(tf_radius2.text) <= 0or
          (strtofloat(tf_hoehe.text) <= 0)   or
          (strtofloat(tf_seite.text) <= 0)
       then showmessage('Alle Zahlen müssen > 0 sein.')

       else
          begin
           radius1 := strtofloat(tf_radius1.text);
           radius2 := strtofloat(tf_radius2.text);
           hoehe   := strtofloat(tf_hoehe.text);
           seite   := strtofloat(tf_hoehe.text);

             begin
              if sqr(seite) = sqr(radius2-radius1)+sqr(hoehe)
              then

              oberfl          := pi * (radius1*radius1 + radius2*radius2 + seite * (radius1 + radius2));
              volumen         := (pi/3) * hoehe * (radius1*radius1 + radius1 * radius2 + radius2*radius2);
              tf_oberfl.text  := floattostr(oberfl);
              tf_volumen.text := floattostr(volumen);
             end;
          end;
end;

das ist ein programm, dass das volumen und die oberfläche eines kegelstumpfes berechnet... das programm läuft zwar aber es zeigt mir immer das hier an:
Zitat:
[Warning] Unit1.pas(114): Variable 'oberfl' might not have been initialized

und wenn ich auf den button berechnen klicke, kommt das hier:

user defined image

wenn ich dann den debugger laufen lasse, kommt das hier:

user defined image
benutze delphi 4 @ windows XP...

kann mir jemand helfen?

gruß, doc

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt & Topic umbenannt.


fcg - Fr 10.10.03 19:18

erstmal willkommen im Forum, zweitens ändern mal den Namen deines Topics so, das es Aussagekräfitg wird!


Christian S. - Fr 10.10.03 19:22

Hallo und herzlich Willkommen im Forum!

Bitte schreibe doch noch, in welcher Zeile der geposteten Prozedur der Fehler auftaucht, dann kann man gezielter suchen.

MfG
Peter

P.S.: Bitte nutze demnächst für Quelltext bitte die Delphi-Tags. Die erhalten die Formatierung und unterstützen Syntax-Highlighting im Forum!


//edit:
P.P.S: bevor Du es von einem Admin oder Mod hörst: laut Richtlinien sind Verweise auf Internetseiten in der Signatur nicht erlaubt. Aber Du kannst ja eine Internetseite im Profil eintragen!


Klabautermann - Fr 10.10.03 19:45
Titel: Re: Floating Point error
Hallo,
drsnoop hat folgendes geschrieben:
[Warning] Unit1.pas(114): Variable 'oberfl' might not have been initialized

das ist nur ein hinweis darauf, das du mit einer Variable Arbeitest, der du vorher keinen Wert zugewiesen hast. Wenn du vor der ersten Verwendung der Variable oberfl die Zeile:

Delphi-Quelltext
1:
oberfl := 0;                    

einfügst, sollte sie verschwinden.

Kommt die Floating Point Fehlermeldung bei allen Werten oder nur wenn du bestimmte eingibst? Erzeugst du vieleicht eine Division durch Null?

Gruß
Klabautermann


fcg - Fr 10.10.03 20:02

das ist die 'Fehlerzeile':


Delphi-Quelltext
1:
              tf_oberfl.text  := floattostr(oberfl);                    


wenn du vorher der Variablen oberfl den Wert null zuweißt, geht es, und als Oberflächenergebniss kommt dann der Weert Null heraus...

fcg


drsnoop - Fr 10.10.03 20:08

danke erstmal für die freundliche aufnahme...

das mit der signatur wusste ich nicht... hab ich auch schon geändert jetzt... :D


und vielen dank für die hilfe... jetzt klappts... hänge seit 2 stunden daran und habe auch shcon den kompletten quelltext umgeschireben und alles und habe teilweise immer mehr fehlmeldungen gehabt...

werde euch weiterempfehlen!!! :D