![]() |
Länderunabhängige Konvertierung von Kommazahlen<->Stri
Hallo,
wie kann man möglichst einfach eine Gleitkommazahl zu einem menschenlesbaren String konvertieren, und das unabhängig von den Ländereinstellungen des Benutzers (sprich DecimalSeparator)? Es soll auch keine Genauigkeit verloren gehen. Was ich natürlich nicht machen will, ist, DecimalSeparator einfach zu überschreiben. Vorher würde ich FloatToStr / StrToFloat reimplementieren, allerdings ist der Assemblercode der RTL eher abschreckend... Gruß |
Re: Länderunabhängige Konvertierung von Kommazahlen<->
Es gibt doch auch die varinate mit dem Format als Parameter
|
Re: Länderunabhängige Konvertierung von Kommazahlen<->
...welche bei der Wahl des Dezimaltrennzeichens leider auch die Ländereinstellungen beachtet :(
|
Re: Länderunabhängige Konvertierung von Kommazahlen<->
Nein:
Delphi-Quellcode:
function StrToFloat(const S: string; const FormatSettings: TFormatSettings): Extended;
|
Re: Länderunabhängige Konvertierung von Kommazahlen<->
Kennt mein Delphi6 leider nicht, schade.
|
Re: Länderunabhängige Konvertierung von Kommazahlen<->
Was spricht eigentlich gegen die Veränderung der Konstante(n)?
|
Re: Länderunabhängige Konvertierung von Kommazahlen<->
Hallo Dani,
Zitat:
Delphi-Quellcode:
Damit wird eine Zahl im internen Format geschrieben - so dass sie mittels Read() auch einfach wieder gelesen werden kann.
var
s: string; e: Extended; code: Word; begin Str(Pi:0:18, s); Val(s, e, code); end; Was den umgekehrten Weg (StrToFloat) angeht, so musst du mal in der Online Help nachsehen, in welcher Unit diese Funktion bei dir implementiert ist. Bei mir ist es SysUtils. Grüße vom marabu |
Re: Länderunabhängige Konvertierung von Kommazahlen<->
Vielleicht werden an anderer Stelle im Programm die Konstanten benötigt? Den alten Wert speichern und nach der Konvertierung zurückschreiben wäre zwar möglich, finde ich aber irgendwie... dirty
Naja, wenn es keine saubere Lösung gibt, wird das wohl herhalten müssen. Danke dir :) @Marabu Danke für den Tipp! aber leider beachtet auch Str() die Ländereinstellungen |
Re: Länderunabhängige Konvertierung von Kommazahlen<->
Dann implemnetier dir doch eine eigene Variante:
Delphi-Quellcode:
function MyFloatToStr( f: Extended): String;
var ds, ts: Char; begin ds := DecimalSeparator; DecimalSeparator := ','; ts := ThousandSeparator; ThousandSeparator := ''; result := FloatToStr( f); DecimalSeparator := ds; ThousandSeparator := ts; end; |
Re: Länderunabhängige Konvertierung von Kommazahlen<->
Hallo Dani,
Zitat:
Diese beiden Prozeduren stammen noch aus der Urzeit von Pascal und arbeiten ausschließlich mit der internen (anglophilen) Darstellung. Gute Nacht |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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 by Thomas Breitkreuz