Frage

Ich kann zurückgesetzt FPU des CTRL-Register mit dieser:

http://support.microsoft.com/kb/326219

Aber wie kann ich aktuelle Register speichern und wiederherstellen sie später?

Es ist von .net Code ..

Was ich tue, ist von Delphi eine .net dll als COM-Modul aufrufen. Überprüfen Sie die Strg Register in delphi Ausbeute ein Wert, mit controlfp im .NET-Code überprüft einen anderen Wert. Was ich brauche, ist in wesentlich ist, dies zu tun:

_controlfp(_CW_DEFAULT, 0xfffff); 

Also meine Fließkommaberechnungen in dem .net-Code nicht abstürzt, aber ich mag die Wiederherstellung Strg Register bei der Rückkehr.

Vielleicht kann ich nicht? Vielleicht ist Delphi ihnen Zurücksetzen, wenn nötig? Ich gebloggt dieses Problem hier .

War es hilfreich?

Lösung

uses
   SysUtils;

var
   SavedCW: Word;
begin
   SavedCW := Get8087CW;
   try
     Set8087CW($027f);
     // Call .NET code here
   finally
     Set8087CW(SavedCW);
   end;
end;

Andere Tipps

Die gleiche Funktion können Sie sie ändern verwenden: _controlfp(). Wenn Sie in einer Maske von 0 übergeben, wird der aktuelle Wert nicht verändert werden, aber es wird zurückgegeben werden -. Speichern, und einen zweiten Anruf verwenden, um _controlfp(), um sie wiederherzustellen später

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top