Zitat:
Aus 4,5887305339 macht die Funktion '4'#0'58873053386861'. Das dabei Berechnungen auf die Bretter gehen, dürfte klar sein. Nur warum wird aus einem Komma "#0"?
Warum gehen Berechnungen auf die Bretter, weil du mit FloatToStr einen String generierst? Ob im String die Zahl ob die erste Zeile von Pippi Langstrumpf Lied steht, sollte dem Programm doch egal sein, denn du rechnest ja mit der Zahl und nicht mit dem String. Andersherum wäre es kritisch.
Aber egal. Ich weiß nicht warum, aber anscheinend steht irgendwo in den Einstellung ein #0 als Dezimaltzrennzeichen eingetragen.
Wenn du entscheiden willst was das Dezimaltrennzeichen sein soll, dann musst du es der Formel sagen. Hier mal aus dem Kopf:
Delphi-Quellcode:
var
d: Double;
fs: TFormatSettings;
s: string;
begin
d := 4.5887305339;
fs.DecimalSeparator := ',';
s := FloatToStr(d, fs);
ShowMessage(s);
Nun weiß Delphi was gewünscht ist.