Einzelnen Beitrag anzeigen

Watzi

Registriert seit: 5. Jan 2010
3 Beiträge
 
#1

Gleitkommaüberlauf

  Alt 25. Jan 2010, 20:47
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 = 'Startethen
      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
  Mit Zitat antworten Zitat