![]() |
Probleme mit FormatSettings.DecimalSeparator
Hallo,
der Befehl FormatSettings.DecimalSeparator gibt mir machmal den Falschen Wert zurück Wir haben mehrere Win7 (64bit) Rechner, die mir hin und wieder anstelle eines ',' einen '.' zurückgeben Ist das ein bekanntes Problem ? Lösen kann ich das Problem meistens dadurch, das ich in der System Einstellung unter "Region Sprache" ein anders Land auswähle und dann wieder zurück auf Deutsch wechsel Beispiel
Code:
label1.Caption := '1' + FormatSettings.DecimalSeparator + '00';
Gruß Torsten |
AW: Probleme mit FormatSettings.DecimalSeparator
Reine Spekulation, aber das klingt doch so, als ob das Problem bei Windows liegen würde. Hast du auf einem der betroffenen Rechner mal geschaut, ob da vielleicht wirklich '.' als Trennzeichen eingestellt war?
|
AW: Probleme mit FormatSettings.DecimalSeparator
Dieses Phänomen hatte ich schon des öfteren mit HP-Rechnern. Allerdings mit der Einschränkung, dass dies nicht "hin und wieder" passierte, sondern ein einmaliger Vorgang nach der Auslieferung bzw. erstmaligen Inbetriebnahme war. D.h. wenn man einmalig die Ländereinstellung gewechselt, übernommen, und wieder zurück gewechselt hat, dann war es behoben.
Und, richtig, wie Zacherl schon geschrieben hat, das ist ein Windows Problem, das nichts mit Delphi zu tun hat. |
AW: Probleme mit FormatSettings.DecimalSeparator
Zitat:
Ja, In den Windows Einstellungen ist immer ein ',' eingetragen Eigentlich habe ich auch gelesen, das dieser Fehler durch einmaliges ändern der System Einstellungen behoben sein soll Aber der Fehler tritt leider immer wieder mal sporadisch auf Gruß Torsten |
AW: Probleme mit FormatSettings.DecimalSeparator
Das ist ein bekannte Bug von Windows7.
Wenn Windows 7 als Englich installiert wurde und dann das deutsche Sprachpaket darüber kommt es zu diesem Problem. Es gibt unter Windows 7 einmal die System-Sprache und einmal die User-Sprache. Auch wenn in deinem Profil DE eingestellt ist und der richtige Dezimalseparator angezeigt wird, nimmt u.a. Delphi nicht die User-Sprache, sondern die System-Sprache. Vor Windows 7 gab es nur die Systemsprache. Eine einfache Fehlerbehandlung ist, in die Spracheinstellungen zu gehen und dort "auf Standard zurücksetzen" machen. Dann wird auch die System-Sprache richtig eingestellt und es kommt der richtige Dezimalseparator. Der Bug wird übrigens bei einem Upgrade von Win7 auf Win10 sogar mitgenommen ;) Wurde hier übrigens schon behandelt: ![]() ![]() |
AW: Probleme mit FormatSettings.DecimalSeparator
Zitat:
ms-help://embarcadero.rs_xe7/libraries/System.SysUtils.TFormatSettings.Create.html Ein TFormatSettings-Datensatz muss vor der Verwendung initialisiert werden. Mit Create können Sie alle Felder gemäß des angegebenen Gebietsschemas füllen.
Delphi-Quellcode:
procedure TForm1.Button11Click(Sender: TObject);
var FS: TFormatSettings; begin FS := TFormatSettings.Create('de-DE'); Caption:= '1'+ FS.DecimalSeparator+'00'; end; procedure TForm1.Button12Click(Sender: TObject); var FS: TFormatSettings; begin FS := TFormatSettings.Create('en-US'); Caption:= '1'+ FS.DecimalSeparator+'00'; end; |
AW: Probleme mit FormatSettings.DecimalSeparator
Zitat:
Ok, ich werde es mal ausprobieren Gruß Torsten |
AW: Probleme mit FormatSettings.DecimalSeparator
Da FormatSettings eine globale Variable ist, würde ich mal untersuchen, ob nicht irgendwelcher Code, darauf herumschreibt - wurde früher durchaus gern gemacht, einfach mal temporär DecimalSeparator umändern, eine Methode aufrufen und danach wieder zurück ändern - thread sicherheit, was ist das?
|
AW: Probleme mit FormatSettings.DecimalSeparator
Wir hatten das Problem auch schon ein paarmal. Ich vermute hier werden irgendwelche Einstellungen (z.B. Registry) gelesen, die nicht richtig initialisiert sind. Einzige mir bekannte Lösung: Das schon erwähnte Umstellen der Sprache auf was anderes und zurückstellen auf Deutsch.
|
AW: Probleme mit FormatSettings.DecimalSeparator
Das Problem ist einfach.
Es gibt mehrere Speicherorte für diese Settings und bei einigen "vorinstallierten" Windowsen werden/wurden nicht alle Speicherorte richtig initialisiert. Die eine API liest von da, eine andere von dort, manche Programme gehen garnicht über APIs und denken sie sind schlauer, wenn sich selber in der Registrie rumfummeln und am Ende wundert sich jemand, wenn er die "falschen" Settings ausliest. Nach dem Ändern über den Windowsdialog steht es dann aber überall richtig drin. Manchmal werden Speicherorte verschoben oder Neue erfunden, weil z.B. früher ein Setting global war und nun userabhängig ist ...... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 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