AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Probleme mit FormatSettings.DecimalSeparator
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit FormatSettings.DecimalSeparator

Ein Thema von Hunni · begonnen am 10. Jan 2017 · letzter Beitrag vom 13. Jan 2017
Antwort Antwort
Seite 1 von 2  1 2      
Hunni

Registriert seit: 30. Apr 2006
Ort: Rödermark
97 Beiträge
 
Delphi 11 Alexandria
 
#1

Probleme mit FormatSettings.DecimalSeparator

  Alt 10. Jan 2017, 18:22
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
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: Probleme mit FormatSettings.DecimalSeparator

  Alt 10. Jan 2017, 18:29
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?
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Probleme mit FormatSettings.DecimalSeparator

  Alt 10. Jan 2017, 18:43
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.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Hunni

Registriert seit: 30. Apr 2006
Ort: Rödermark
97 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Probleme mit FormatSettings.DecimalSeparator

  Alt 10. Jan 2017, 18:52
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?
Hi,

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
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#5

AW: Probleme mit FormatSettings.DecimalSeparator

  Alt 10. Jan 2017, 19:14
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:
http://www.delphipraxis.net/156447-d...lsettings.html
http://www.delphipraxis.net/160539-d...p-vs-win7.html
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#6

AW: Probleme mit FormatSettings.DecimalSeparator

  Alt 10. Jan 2017, 19:37
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;
  Mit Zitat antworten Zitat
Hunni

Registriert seit: 30. Apr 2006
Ort: Rödermark
97 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Probleme mit FormatSettings.DecimalSeparator

  Alt 10. Jan 2017, 20:55
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;
Hallo

Ok, ich werde es mal ausprobieren


Gruß

Torsten
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Probleme mit FormatSettings.DecimalSeparator

  Alt 12. Jan 2017, 16:53
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?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: Probleme mit FormatSettings.DecimalSeparator

  Alt 12. Jan 2017, 17:10
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Probleme mit FormatSettings.DecimalSeparator

  Alt 12. Jan 2017, 17:35
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 ......
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz