Fließkommafehler: Stack-Fehler

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Gleitkomma-Exceptions


Auf dem Fließkomma-Stack ist ein Überlauf aufgetreten. Dieser Fehler kann durch Assembler-Anweisungen verursacht werden, die zu viele Register verwenden. Eine andere mögliche Ursache ist die fehlerhafte Deklaration einer Fließkommafunktion.

Beispiel (zur Illustration):

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  I: Integer;
  S: Single;

begin
  try
    // FLD-Anweisung ladet einen reelen Wert in den FPU-Stack
    for I := 0 to 32 do
    begin
      asm
        FLD S
      end;
    end;

  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

end.

Diese Fließkommafehler können durch Setzen des FPU-Steuerwortes vermieden werden. Siehe die Prozedur SetExceptionMask:

    SetExceptionMask([exInvalidOp]);