![]() |
NaN unter Windows XP mit XE4 compiliert
Ich habe etwas kurioses.
folgendes : b ist Numeric(10,5)
Code:
In b steht NULL.
select b from tabelle
Code:
Verhalten von einem XE4 übersetzen Programm
var b:real;
begin . . b := myquery.fieldbyname('b').asfloat; . . Windows 7 und höher - b = 0 Windows XP - b = NaN Das könnte man zwar abfangen mit
Code:
aber ich portiere gerade mehrere hunderttausend Zeilen Code.
select coalesce(b,0) from tabelle
Und wenn das select lautet
Code:
, dann habe ich ein Problem.
select * from tabelle
Mal abgesehen davon das dies ein Tretminenfeld wird. Interessant ist auch das dies nur beim ersten Abruf des SQL Befehls passiert. Wiederhole ich diesen Befehl sind die Zahlen korrekt. d.h b = 0 Jemand darüber schon einmal gestolpert und/oder hat eine Lösung dafür? |
AW: NaN unter Windows XP mit XE4 compiliert
Teste doch zur Sicherheit mal in einer XP-VM um auszuschließen dass es an der Windows-Version selbst liegt.
Gab es früher nicht gerne HP-Druckertreiber (oder sowas) die jeder Anwendung die FPU-Flags modifizierten? Delphi-Anwendungen mit ihren eher unkonventionellen FPU-Flags bekamen dadurch Probleme... |
AW: NaN unter Windows XP mit XE4 compiliert
Vielleicht erst mal feststellen, wo genau der Korken sitzt: im Datenbankclient, der Zugriffskomponente, oder in der Delphi-Runtime.
|
AW: NaN unter Windows XP mit XE4 compiliert
Problem gefunden.
Die Variable wurde per VAR einer Funktion übergeben und dort nie initialisiert. Kollege wurde gerade auf dem Hof gesteinigt ;-) |
AW: NaN unter Windows XP mit XE4 compiliert
Nur so nebenbei: Wieso real?
Delphi-Quellcode:
var b:real;
|
AW: NaN unter Windows XP mit XE4 compiliert
Eigentlich verhält sich dein Programm unter XP jetzt korrekt.
NULL != 0 Hintergrund wird sein das ab Vista der Desktop von Windows in einem beschleunigten Modus (DirectDraw) läuft und hierfür die Exception-Mask der FPU standardmäßig anders eingestellt sind das sollte NAN-Exception einfach als O-Werte zurückgeliefert werden. |
AW: NaN unter Windows XP mit XE4 compiliert
Zitat:
|
AW: NaN unter Windows XP mit XE4 compiliert
Zitat:
|
AW: NaN unter Windows XP mit XE4 compiliert
der Code ist paar Jahr alt und kommt noch aus Delphi 4 teilweise. Wurde damals alles mit real gemacht.
|
AW: NaN unter Windows XP mit XE4 compiliert
Zitat:
Können wir das irgendwie nachstellen? Welche Drittanbieter-Abhängigkeiten haben wir hier durch den Datenbank-Zugriff? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz