Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#23

Re: Projekt bitte testen - Lag?

  Alt 23. Mai 2008, 23:12
Zitat von littleDave:
Also zu dem Floating-Point-Problem: dafür musst du die CPU anweisen, genauer zu arbeiten bzw. invalide Operations zu "ignorieren". Das kannst du mit folgendem Befehl machen, den du am besten als allererstes (entweder im initialization-Teil einer unit oder im FormCreate-Event) aufrufst
Nicht die CPU sondern die FPU und genauer deren Control Word änderst du damit. Aber wozu zum Teufel? Rechnet richtig. Das ist ein typischer Fall von Fehler verstecken anstatt zu beseitigen. Dieser Code bzw. diese Lösung ist totaler Humbug.

Und wenn ungültige Werte auftauchen, dann muss man diese entsprechend verhindern oder direkt dort mit IsNAN(), etc arbeiten.

Und noch ein Hinweis: "Invalid Floating Point" Fehler bekommt man auch leicht, wenn man direkt mit LoadLibrary() DLLs lädt, welche mit dem Microsoft Visual Studio erstellt wurde. Hintergrund: Der Startup/Initcode von Visual Studio für die DLL verändert genau dieses Control Word der FPU so, dass diese mehr Fehler meldet, als Delphi erwartet. Exra für dieses (schon lange bekannte) Problem liefert CodeGear seit Delphi 4 (vllt. auch schon 3?) die Delphi-Referenz durchsuchenSafeLoadLibrary() Funktion mit, welche als Ersatz zu der LoadLibrary() Funktion bei solchen DLLs verwendet werden sollte. Diese Funktion sichert das Control Word und stellt es nach dem Laden wieder her.
  Mit Zitat antworten Zitat