Hi,
zunächst Danke für die Hinweise. Aber das Problem hat nichts mit den üblichen Flouting-point Fehlern zu tun.
Auch mit der Plattform hat es nichts zu tun: ich sagt ja bereits, daß sich ein und dieselbe EXE-Datei auf verschiedenen Win2000Pro SP4 Rechner unterschiedlich verhält-die "Plattform" ist j
a dann wohl dieselbe...
Ich habe einen reproduzierbaren Anhaltspunkt für das oben beschriebene Verhalten ausfindig gemacht:
Immer wenn das Programm i64ext.exe die Datei msvcrt.dll läd, kommte zu der fehlerhaften Berechnung.
Das Progrqamm i63ext.exe läd die
DLL natürlich nicht explizit, aber anscheinend gibt es hook-
DLL's, die nach einem mir nicht bekannten Verfahren hinzugeladen werden. Diese laden dann msvcrt.dll nach.
Beispiel: winvnc
oder CTHELPER (Ein Programm von Creative Technology Ltd, das irgendwie zu den Soundblaster-Treibern gehört).
Folgendes ist reproduzierbar:
Auf Rechner A läuft der VNC-Server, auf Rechner B der VNC-viewer.
Sind die Rechner nicht verbunden, funktioniert i63ext.exe auf Rechner A. Verbindet man sich von B aus mit A, dann zeigt das Programm diesen Unsinn 123451234512345114 statt 123451234512345123) an.
Kappt man die Verbindung und startet das Programm auf A neu, so ist wieder alles OK.
Ich habe mit dem schönen Programm Process Explorer 8.2 von sysinternals jeweils nachgesehen, welche
DLL's das Programm geladen hatte. Immer wenn msvcrt.dll geladen ist, funktioniert VAL->STR nur mit 16-stelliger Genauigkeit, ist es nicht geladen, ist alles OK.
Ahso: Ab und B sind beides Win2000Pro SP4 Rechner. Die Version von MSVCRT.DLL ist (auf beiden Rechnern) 6.01.9844.0000.
Fällt jemandem etwas dazu ein??
Gruß
nmm