Hallo liebe Mitstreiter,
ich weiß nicht genau ob es sich um ein Delphi oder Windows-Problem handelt. Wahrscheinlich könnt ihr mir mit einem Link weiterhelfen.
Ich habe umgestellt von Delphi6 auf
Rad Studio XE und von XP auf Win7.
Im RadStudio unter Win7 x64 wollte ich lediglich einen String 2,4535 in eine Double umwandeln also FloatToStr('2,345') -> Fehlermeldung wegen falschem Dezimaltrenner (mit PUNKT geht's). Also nachgeschaut ob in der Systemsteuerung / Region und Sprache und dort im deutschen Bereich die richtigen Trenner eingestellt sind -> alles IO.
Gesucht und gegooglt, aha es gibt noch eine überladene Funktion der FloatToStr mit TFormatSettings. Dazu hab ich mir die Hilfe angeschaut und wie angegeben die Formatsettings mit Create ermittelt, FloatToStr -> Fehlermeldung.
Im Debug-Modus zeigt mir die FormatSettings als DezimalSeparator den PUNKT an!!
Weitergeschaut, aha GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, FS) gibts ja auch noch. probiert -> Fehlermeldung, Debugmodus -> Dezimaltrenner ist der PUNKT!!
Weitergeschaut, GetLocaleFormatSettings(1031, FS) probiert jetzt geht's, ABER andere fertige Komponenten wie zum Beispiel die TjvValidateEdit der JediVCL zeigen wieder den PUNKT an, das kann doch nicht wahr sein!!
Ich hab dann noch ein bißchen weiter geschaut und mir die Werte der Variablen in GetLocaleFormatSettings beobachtet 1031 scheint die korrekten FormatSettings zu laden, wenn man aber die Variable LOCALE_SYSTEM_DEFAULT oder LOCALE_USER_DEFAULT benutzt haut das nicht hin sie geben 2048 bzw. 1024 zurück.
Ich kann doch keine Programme mit konstantem Parameter für die Region ausliefern, wenn es in verschiedenen Regionen laufen soll.
Was läuft hier falsch und wo? Nochmal zum Hinweis Win7 x64 und
Rad Studio XE Pro wird verwendet.
Hab dasselbe nochmal unter XP-Mode und Delphi6 programmiert ging problemlos, aber das kompilierte Testprogramm (Delpi6) unter Win7 hatte wieder den falschen Dezimaltrenner.
Vielen Dank für Eure Mühe und Hinweise im voraus.