Autor |
Beitrag |
lexmy3
      
Beiträge: 140
WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
|
Verfasst: Mi 08.03.06 10:36
Hallo,
ich habe einen Code für 1000er Terennzeichen, jedoch mit Punkt als Trennzeichen.
Jetzt muss ich diesen auf den englischen Format ( Komma als Trennzeichen) umschreiben!
Kann ich diesen Code umschreiben??
Kann mir einer dabei helfen?
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| Function ThousandsToInt (Const aString : String) : Integer; Begin Result := StrToIntDef (StringReplace (aString,ThousandSeparator,'', [rfReplaceAll]), 0); End;
Function IntToThousands (Const aValue : Integer) : String; Begin Result := FormatFloat (',0',aValue); End;
procedure TForm1.Edit7Enter(Sender: TObject); begin With Sender as TEdit Do Text := IntToStr (ThousandsToInt (Text)); end;
procedure TForm1.Edit7Exit(Sender: TObject); begin With Sender as TEdit Do Text := IntToThousands (StrToIntDef (Text,0)); end;
procedure TForm1.Edit7Change(Sender: TObject); function Filter(const S: String): String; const OK: Set of Char = ['0'..'9'] ; var i: Integer; begin Result := ''; for i := 1 to Length(S) do if (S[i] in OK) then Result := Result +S[i]; end;
begin if (Edit7.Modified) then Edit7.Text := Filter(Edit7.Text); Edit7.SelStart := Length(Edit7.Text); end;
end. |
mfg lexmy3
|
|
aim65
      
Beiträge: 312
Win 9x, Win XP
Delphi 3pro, 7PE
|
Verfasst: Mi 08.03.06 10:50
Auf die Kürze,
vielleicht hilft Dir das weiter:
www.delphibasics.co....me=ThousandSeparator
MfG Horst
|
|
lexmy3 
      
Beiträge: 140
WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
|
Verfasst: Mi 08.03.06 11:52
Titel: Komma statt Punkt???
Hey, Danke für deine Reaktion
Aber dieser Code funktioniert gar nicht so wie vorgegeben!
Also es handelt sich hier, wenn ich es als Anfänger richtig verstehe um Systemeinstellungen von Windows. Und diese muss ich irgendwie umgehen oder kurzfristig umschreiben.
Habe aber davon nicht viel Ahnung.
So please help me!!!
PS: Dies funzt also nicht!!!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Example code : Changing the thousands separator character var amount : Currency; begin amount := 1234567.89; ShowMessage('Amount = '+FloatToStrF(amount, ffCurrency, 10, 2));
ThousandSeparator := ' '; ShowMessage('Amount = '+FloatToStrF(amount, ffCurrency, 10, 2)); end; |
Ergebnis:
Amount = £1,234,567.89
Amount = £1 234 567.89
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Mi 08.03.06 12:40
Zitat: | Bei allen Gleitkommaformaten wird das Zeichen für das Dezimal- bzw. das Tausendertrennzeichen aus den globalen Variablen DecimalSeparator und ThousandSeparator bzw. deren TFormatSettings-Entsprechungen ausgelesen. |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var amount : Currency; begin amount := 1234567.89; ShowMessage('Amount = '+FloatToStrF(amount, ffCurrency, 10, 2));
ThousandSeparator := ','; DecimalSeparator :='.'; ShowMessage('Amount = '+FloatToStrF(amount, ffCurrency, 10, 2)); |
alles Klar?
grez
msch
_________________ ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
|
|
aim65
      
Beiträge: 312
Win 9x, Win XP
Delphi 3pro, 7PE
|
Verfasst: Mi 08.03.06 12:57
MSCH ist mir da zuvorgekommen...
In dem angegebenen Beispiel wurde ein Leerzeichen verwendet, was ja dann auch richtigerweise zu dem von Dir gezeigten Ergebnis geführt hat. Hier hättest Du natürlich ein Zeichen Deiner Wahl eingeben müssen.
So, jetzt ist ja wohl alles geklärt. Viel Erfolg.
Horst
|
|
lexmy3 
      
Beiträge: 140
WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
|
Verfasst: Mi 08.03.06 13:42
Titel: Statt Punkt ein Komma
Also liebe Delphi Freunde,
Dieser Code funzt nicht so wie erwünscht (wie oben schon erwähnt), denn hier wird aus einem Komma ein Punkt aber nicht aus Punkt ein Komma!!!
Habe hier gelesen dass Delphi Problemme hat punkte/Kommas umzuwandeln!
Also mit den Tausender Schritten gibt es wohl Diskrepanz oder was???
Ich suche und finde keine Hilfe zu diesem Problem. 
|
|
aim65
      
Beiträge: 312
Win 9x, Win XP
Delphi 3pro, 7PE
|
Verfasst: Mi 08.03.06 15:00
Komisch, bei mir funktioniert es mit folgendem Code einwandfrei in beiden Richtungen (hab's mal auf die Schnelle mit 'nem ButtonClck gemacht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| var Form1: TForm1; amount : Currency; implementation
{$R *.DFM}
procedure Zeige; begin amount := 1234567.89; ThousandSeparator := ','; DecimalSeparator :='.'; ShowMessage('Amount = '+FloatToStrF(amount, ffCurrency, 10, 2)); end;
procedure TForm1.Button1Click(Sender: TObject); begin Zeige; end; |
Je nachdem ich Komma und Punkt für ThSep und DecSep einsetze, krieg ich das richtig im Display gezeigt - für oben eben 1,234,567.89. Umgekehrt dann 1.234.567,89.
Hast Du die Probleme evtl. bei der Eingabe? (Delphi verwendet intern wohl immer den Punkt als DecSeparator).
|
|
lexmy3 
      
Beiträge: 140
WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
|
Verfasst: Mi 08.03.06 16:26
Hey ahbe gerade in einer neuen Anwendung ausprobiert es geht doch !!!
Na ja muss jetzt nur gucken, dass ich es in meinen Code irgendwie einbaue.
Danke
mfg
Lexmy3
|
|
|