Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Gleitkommaüberlauf (https://www.delphipraxis.net/146706-gleitkommaueberlauf.html)

Watzi 25. Jan 2010 20:47


Gleitkommaüberlauf
 
Hallo zusammen!

Da ich in der Suche und mit google nicht weitergekommen bin, frage ich mal hier...vielleicht könnt ihr mir ja helfen.

Ich habe folgendes Problem bei meinem Programm: Ich bekomme an einer Stelle im Programm immer die Fehlermeldung 'Gleitkommaüberlauf'. Dieser Fehler tritt auf, seit ich an einer anderen Stelle etwas verändert habe.

Ich poste mal den entsprechenden Teil des Quelltextes:

Delphi-Quellcode:
procedure zaehleschritte (crf,cif:real);
begin
  zaehler:=0;
  zrp := 1;
  zip := 1;
  vergleich := 0;
  abweichung := 0;
  while zrp < 600 do
  begin
    while zip < 600 do
    begin
      if form1.button2.caption = 'Starte' then
      begin
        zrf := zrp/(form1.image1.width/diffxf)+x2f;        
        zif := zip/(form1.image1.height/diffyf)+y2f;
      end
      else
      begin
        zrf := zrp/(form1.image1.width/h3)+h2;
        zif := (zip/(form1.image1.height/h4)+h1)*-1;
      end;
      repeat
        inc(zaehler);
        ergreal := sqr(zrf) - sqr(zif) + crf;     // an dieser Stelle tritt beim neunten Durchlauf die Fehlermeldung auf
        ergimag := (cif + 2*zrf*zif);                            
        zrf := ergreal;
        zif := ergimag;
        betragerg := sqrt(sqr(ergreal) + sqr(ergimag));            
        abweichung := vergleich - betragerg;                  (*)
        if abweichung < 0 then abweichung := -abweichung;     (*)
        vergleich := betragerg;                               (*)
      until (abweichung <= 0.0001) or (zaehler = maxzaehler); (**)    
      zeichne(zaehler,zrp,zip);
      zaehler:=0;
      zip := zip + 1;
    end;
  zrp := zrp + 1;
  zip := 1;
  end;
ende := now;
zeit := ende-start;
form1.edit4.text:=timetostr(zeit);
end;
Das Fehlermeldung kommt, seit ich die mit (*) gekennzeichneten Zeilen hinzugefügt und die mit (**) gekennteichnete geändert habe.
Ich habe vorher alle Variablen in Formcreate initialisiert (auf null gesetzt).

MfG, watzi

mkinzler 25. Jan 2010 20:52

Re: Gleitkommaüberlauf
 
Nimm mal Extended statt Real

Watzi 25. Jan 2010 20:56

Re: Gleitkommaüberlauf
 
da kommt immer noch die selbe Fehlermeldung...


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz