Dezimaltrenner
-
- Beiträge: 351
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Dezimaltrenner
Hallo zusammen,
nachdem das mit den Arrays nun funktioniert rechnet mein Programm auch fleißig damit und es stell sich mir ein neues Problem. Ich habe zwar eine Lösung dafür, die gefällt mir aber nicht.
Folgendes:
Ich möchte meine Arrays in einer Textdatei ausgeben. Hierfür nutze ich "FloatToStrF" mit ffFixed. Das geht auch prima, nur daß als Dezimalzeichen ein Komma verwendet wird. Einerseits finde ich klasse, daß ich z.B. in TextEdit-Felder Zahlen wahlweise mit Komma oder Punkt eingebe kann, Lazarus rechnet mit Beiden, nur bei der Ausgabe in die Textdatei hätte ich gern einen Punkt und kein Komma. Das scheint mit der Ländereinstellung zu tun zu haben.
Gibt es einen Befehl, mit dem ich vor dem Export in die Textdatei von Komma auf Punkt umstellen kann und anschließend wieder zurück?
Mein jetziger Lösungsweg ist, daß ich zu jedem array ein zugehöriges "array of String" erzeuge und dann in einer for-Schleife mit dem Befehl"Str(X_F,sX_F)"
(das kleine "s" kennzeichnet String) umstöpsele, was mir nicht gefällt.
Ich würde gerne "FloatToStr" nutzen, nur aber mit Punkt statt Komma.
MfG
Volker
nachdem das mit den Arrays nun funktioniert rechnet mein Programm auch fleißig damit und es stell sich mir ein neues Problem. Ich habe zwar eine Lösung dafür, die gefällt mir aber nicht.
Folgendes:
Ich möchte meine Arrays in einer Textdatei ausgeben. Hierfür nutze ich "FloatToStrF" mit ffFixed. Das geht auch prima, nur daß als Dezimalzeichen ein Komma verwendet wird. Einerseits finde ich klasse, daß ich z.B. in TextEdit-Felder Zahlen wahlweise mit Komma oder Punkt eingebe kann, Lazarus rechnet mit Beiden, nur bei der Ausgabe in die Textdatei hätte ich gern einen Punkt und kein Komma. Das scheint mit der Ländereinstellung zu tun zu haben.
Gibt es einen Befehl, mit dem ich vor dem Export in die Textdatei von Komma auf Punkt umstellen kann und anschließend wieder zurück?
Mein jetziger Lösungsweg ist, daß ich zu jedem array ein zugehöriges "array of String" erzeuge und dann in einer for-Schleife mit dem Befehl"Str(X_F,sX_F)"
(das kleine "s" kennzeichnet String) umstöpsele, was mir nicht gefällt.
Ich würde gerne "FloatToStr" nutzen, nur aber mit Punkt statt Komma.
MfG
Volker
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Dezimaltrenner
Definier deine eigenen TFormatSettings und übergeb die an FloatToStr (und dann umgekehrt auch bei StrToFloat).
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Dezimaltrenner
Oder einfacher, vorher das Trennzeichen setzen:
Code: Alles auswählen
DecimalSeparator := '.';
Johannes
-
- Beiträge: 351
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Dezimaltrenner
Vielen Dank!
Den "DecimalSeparartor" werde ich heute Abend probieren.
Die eigene Klasse TFormatSettings ist mir noch etwas zu hoch. Hab' noch keine Vorstellung wie das geht.
Aber trotzdem DANK an ALLE!
Gruß
Volker
Den "DecimalSeparartor" werde ich heute Abend probieren.
Die eigene Klasse TFormatSettings ist mir noch etwas zu hoch. Hab' noch keine Vorstellung wie das geht.
Aber trotzdem DANK an ALLE!
Gruß
Volker
-
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: Dezimaltrenner
Bin auch erst an einem ähnlichen Problem verzweifelt, dann aber gelöst:
Die Komponente TFloatSpinEdit verträgt auf einem System mit Komma-als-Länderspezifischem-Dezimaltrenner nicht den Punkt als Dezimaltrenner (über Decimalseparator := '.' eingestellt).
Hierbei jedesmal wieder zurückschalten auf ',', wenn man so was benutzt, und wieder bei der Ausgabe mit FloatToStr auf Punkt. Geht anscheinend nicht anders.
Die Komponente TFloatSpinEdit verträgt auf einem System mit Komma-als-Länderspezifischem-Dezimaltrenner nicht den Punkt als Dezimaltrenner (über Decimalseparator := '.' eingestellt).
Hierbei jedesmal wieder zurückschalten auf ',', wenn man so was benutzt, und wieder bei der Ausgabe mit FloatToStr auf Punkt. Geht anscheinend nicht anders.
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Dezimaltrenner
Das ist ein simpler Record.ErnstVolker hat geschrieben:Vielen Dank!
Den "DecimalSeparartor" werde ich heute Abend probieren.
Die eigene Klasse TFormatSettings ist mir noch etwas zu hoch. Hab' noch keine Vorstellung wie das geht.
Aber trotzdem DANK an ALLE!
Gruß
Volker
Code: Alles auswählen
var
myFormatSettings: TFormatSettings;
begin
myFormatSettings.DecimalSeparator := '.';
writeln(FloatToStr(myFloat, myFormatSettings));
end;
-
- Beiträge: 351
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Dezimaltrenner
DecimalSeparator := '.';
Genau das wars was ich gesucht habe.
Vor dem Speichern auf '.' gestellt und danach wieder zurück auf ','.
Funktioniert bestens.
Danke.
Dieses Forum ist wirklich Spitze.
Gruß
Volker
Genau das wars was ich gesucht habe.
Vor dem Speichern auf '.' gestellt und danach wieder zurück auf ','.
Funktioniert bestens.
Danke.
Dieses Forum ist wirklich Spitze.
Gruß
Volker