Entwickler-Ecke

Sonstiges (Delphi) - Länderspeziefische Kommaeinstellungen


p4nsen - Mi 17.12.03 14:52
Titel: Länderspeziefische Kommaeinstellungen
fogende frage, wie kann ich in meinem progg, dass am dümmsten machen, dass wenn ich deutsche Ländereinstellungen hab es trotzdem akzeptiert wird wenn ein punkt in meiner gleitkommazahl ist und bei englischen das komma akzeptiert wird?
mein programm ist halt in deutsch und englisch, thx im vorraus... hier mal n beispielcode wie ich mir das dachte
also ich brauche halt eine prüfung, ob die eingabe ein gleitkommawert war


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function FloatOk(Txt : string) : boolean;
var
 ZahlF : double;
begin
 try
  ZahlF := StrToFloat(Txt);    //ZahlF wird Eingabe des Nutzers zugewiesen
  result := true;              //wenn die umwandlung in Zahl gelingt = True
 except
  result := false;            //ansonsten gib false zurück, dann Fehlermeld.
 end;
end;


allerdings akzeptiert er hier nur die länderspeziefischen Kommatrennungen (sprich "," oder ".") aber nicht beides....


Chatfix - Mi 17.12.03 15:02

Da Delphi wenn ich mich recht erinnere mit Punkt arbeitet mach doch einfach

Delphi-Quelltext
1:
StringReplace(',''.', Txt);                    

Damit ersetzt du das Komme durch den Punkt und somit müsste es ja klappen...
Bei der Ausgabe kannst du ja je nach dem genau so den Punkt wieder ins Komma umwandeln...


p4nsen - Mi 17.12.03 15:08


Delphi-Quelltext
1:
StrReplace(',''.', Txt);                    

kanns sein das es das in meiner delphiverison net gitb^^
zumindest wirds vom kompilerr nich anerkannt... oder muss ich erst noch ne bibliothek includieren *kA* :roll:

//EDIT
und mein prob is ja was ich festgestellt hab, wenn ich deutsche ländereinstellung hab meckert er bei nem "."
bei englischen akzeptiert er das "," in der geleitkommazahl nich
thx schonma :wink:


Chatfix - Mi 17.12.03 15:10

jo hab mich verbessert es heist StringReplace, sorry


p4nsen - Mi 17.12.03 15:17

hab oben nochma edit-fkt vorgenommen
*schieb* :roll: :roll:


Chatfix - Mi 17.12.03 15:24

Naja entweder du rufst die sprache aus dem system ab oder du probierst es halt 2 mal, einmal mit punkt und einmal mit komma...
der anwender muss es ja nicht mitbekommen ;-)
Und wie du Punkt und Komma tauschen kannst habsch dir ja geschrieben...

Du könntest es ja so machen:


Delphi-Quelltext
1:
2:
3:
4:
5:
var IsFloat: Boolean;
if not FloatOk(StringReplace('.'',', Edit1.Text)) then
  IsFloat :=  FloatOk(StringReplace(',''.', Edit1.Text)) 
else
  IsFloat := True;


Delete - Mi 17.12.03 17:13

Tipp mal bitte in den Delphi-Editor DecimalSeparator ein und lass dir die Hilfe dazu anzeigen. Das dürfte die einfachste Variante sein, weil du damit (ggf. eben auch unabhängig von der eingestellten Sprache) das Zeichen für das Komma einstellen kannst.


Chatfix - Mi 17.12.03 17:48

Kuhl, das wusste ich auch noch nicht...
Ich sag ja man kann nur lernen^^


Delete - Mi 17.12.03 19:26

Man ist stets gern zu Diensten. :)