AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Regionale Einstellungen

Ein Thema von Cogito · begonnen am 9. Mai 2012 · letzter Beitrag vom 24. Mai 2012
Antwort Antwort
Seite 1 von 2  1 2   
Cogito

Registriert seit: 12. Jun 2008
280 Beiträge
 
#1

Regionale Einstellungen

  Alt 9. Mai 2012, 12:35
Hallo zusammen,

in verwende in meinem Programm ein datagrid, bei welchem eines der Felder auf einem decimal field in SQL Server 2008 basiert. Auf manchen Rechnern kann man ein Komma als dezimal trenner verwenden, auf manchen aber auch nicht. Ich dachte bisher immer das würde einzig von den Region-Einstellungen unter Windows abhängen, aber mein Kollege hier hat z.B. auch ein Komma als Trenner eingestellt, kann dies aber nicht in Dezimalfeldern verwenden. Es geht darum, das Kunden gerne immer ein Komma verwenden möchten, weil dies im numerischen Block der Tastatur verfügbar ist und die Eingabe von Dezimalzahlen dadurch sehr viel schneller vonstatten gehen kann. Kann mir jemand sagen, ob und wie ich in Delphi veranlassen kann, das grundsätzlich immer das Komma als Dezimaltrennzeichen verwendet wird?
  Mit Zitat antworten Zitat
ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Regionale Einstellungen

  Alt 9. Mai 2012, 14:15
Kann mir jemand sagen, ob und wie ich in Delphi veranlassen kann, das grundsätzlich immer das Komma als Dezimaltrennzeichen verwendet wird?
Hiermit sollte es vermutlich gehen:
Code:
procedure SetDecimalSeparator(Ch: Char);
var
  DefLCID: LCID;
  Buffer: LPSTR;
begin
  Application.UpdateFormatSettings := True;
  StrPCopy(Buffer, Ch);
  DefLCID := GetThreadLocale;
  if SetLocaleInfo(DefLCID, LOCALE_SDECIMAL, Buffer) then
    DecimalSeparator := StrPas(Buffer)[1];
  Application.UpdateFormatSettings := False;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  SetDecimalSeparator(',');
end;
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Regionale Einstellungen

  Alt 9. Mai 2012, 14:55
schade, hätte ich auch gebrauchen können, aber Lazarus kennt:


Application.UpdateFormatSettings

ledier nicht
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#4

AW: Regionale Einstellungen

  Alt 9. Mai 2012, 15:06
Kennt Lazarus denn die globale Variable Decimalseparator aus SysUtils?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Regionale Einstellungen

  Alt 9. Mai 2012, 15:14
ja, die kennt Lazarus
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.905 Beiträge
 
Delphi 12 Athens
 
#6

AW: Regionale Einstellungen

  Alt 9. Mai 2012, 15:17
Solange Lazarus die Einstellungen nicht zwischendrin wiederherstellt kannst du das auch weglassen. Bei Delphi dient das dazu, dass die gesetzten Einstellungen auch bei einer Aktualisierung beibehalten werden.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Cogito

Registriert seit: 12. Jun 2008
280 Beiträge
 
#7

AW: Regionale Einstellungen

  Alt 16. Mai 2012, 10:03
Kann mir jemand sagen, ob und wie ich in Delphi veranlassen kann, das grundsätzlich immer das Komma als Dezimaltrennzeichen verwendet wird?
Hiermit sollte es vermutlich gehen:
Code:
procedure SetDecimalSeparator(Ch: Char);
var
  DefLCID: LCID;
  Buffer: LPSTR;
begin
  Application.UpdateFormatSettings := True;
  StrPCopy(Buffer, Ch);
  DefLCID := GetThreadLocale;
  if SetLocaleInfo(DefLCID, LOCALE_SDECIMAL, Buffer) then
    DecimalSeparator := StrPas(Buffer)[1];
  Application.UpdateFormatSettings := False;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  SetDecimalSeparator(',');
end;
Dieser Code funktioniert bei mir nicht.
In der Zeile
Code:
if SetLocaleInfo(DefLCID, LOCALE_SDECIMAL, Buffer) then
meldet mir der Compiler einen Fehler: Inkompatible Typen 'AnsiChar' und 'Char'

Kannst du deine Funktion mal testen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Regionale Einstellungen

  Alt 16. Mai 2012, 10:14
Wieso verwendet man hier auch LPSTR?
Zitat:
LPSTR = PAnsiChar;
Im MSDN (Bei Google suchenSetLocaleInfo) steht doch ausdrücklich LPCTSTR.

Oder man nimmt einfach PChar.


PS: Sowas ist übrigens einer der Gründe, warum es beim Umstieg auf Unicode (Delphi 2009 und höher) so viele Probleme gab ... schlechter/fehlerhafter Code.


[add]
Delphi-Quellcode:
procedure SetDecimalSeparator(Ch: Char);
begin
  Application.UpdateFormatSettings := True;
  if SetLocaleInfo(GetThreadLocale, LOCALE_SDECIMAL, PChar(String(Char))) then
    DecimalSeparator := Ch;
  Application.UpdateFormatSettings := False;
end;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (16. Mai 2012 um 10:19 Uhr)
  Mit Zitat antworten Zitat
Cogito

Registriert seit: 12. Jun 2008
280 Beiträge
 
#9

AW: Regionale Einstellungen

  Alt 16. Mai 2012, 14:07
OK, vielen Dank.
Das Problem scheint aber doch woanders zu liegen. Der User möchte nämlich im numerischen Block der Tastatur das Komma benutzen können, wenn er numerische Werte in die Applikation eingibt. Jetzt ist mir aufgefallen, dass es Unterschiede im Num-Block bezüglich der Tastenbelegung gibt. Bei deutschen Tastaturen ist dort ein Komma, bei anderen ein Punkt. Und wenn sie auf den Punkt klicken ist das natürlich nicht erlaubt in einem numerischen Feld. Hat hier jemand eine Idee? Ich könnte mir vorstellen dass es helfen könnte, sobald jemand auf den Punkt klickt dieses automatisch in ein Komma umzuwandeln, aber ich hab ehrlich gesagt keine Ahnung...
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

AW: Regionale Einstellungen

  Alt 16. Mai 2012, 14:27
Bei deutschen Tastaturen ist dort ein Komma, bei anderen ein Punkt
Jemand, der eine Tastatur mit US-Zeichenbelegung angeschlossen hat, wird doch wahrscheinlich auch English (USA) als Regionalsetting eingestellt haben.
Dann passt die Tastatur zur Einstellung.

Wenn es wirklich wichtig ist, dass ein deutschsprachiger User an einem Rechner mit englischer Tastatur effizient arbeiten kann, dann wäre die absolut billigste Lösung zusätzlich eine deutsche Tastatur (Kosten: 8 Euro) anzuschliesen.
Ich würde mich hier nicht auf ein Gemurkse auf Softwarebene einlassen.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:46 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