![]() |
Zahl aus Datei einlesen , Format passt nicht
ich lese aus eine Datei einen String ein und möchte dann mit StrToFloat konvertieren nur bekomme ich leider ein Problem
mit dem Wert 23.24 in der Englischen Schreibweise wenn ich ein deutsche Windows verwenden. Wie formatiere ich am Besten zwischen allen Zahlenformaten hin und her ? Gibt es bessere Lösungen als unter ![]() |
AW: Zahl aus Datei einlesen , Format passt nicht
Wenn es wirklich mit Dezimalpinkt ist, kannst Du die val-Prozedur nehmen.
|
AW: Zahl aus Datei einlesen , Format passt nicht
Eine Möglichkeit wäre, die globale Variable
Delphi-Quellcode:
zur Konvertierung umzusetzen:
FormatSettings.DecimalSeparator
Delphi-Quellcode:
Wobei ich Folgendes bevorzuge:ch := FormatSettings.DecimalSeparator; FormatSettings.DecimalSeparator := '.'; try f := StrToFloat(s); finally FormatSettings.DecimalSeparator := ch; end;
Delphi-Quellcode:
s := StringReplace(s, '.', FormatSettings.DecimalSeparator, []); f := StrToFloat(s); |
AW: Zahl aus Datei einlesen , Format passt nicht
Man kann auch diese Funktion verwenden:
Delphi-Quellcode:
function StrToFloat(const S: string; const AFormatSettings: TFormatSettings): Extended;
|
AW: Zahl aus Datei einlesen , Format passt nicht
bei mir hat das geholfen
Delphi-Quellcode:
wenn nicht nochmal versuchen in der systemsteuerung/region und sprache alle daten zur formatierung der Uhrzeit und Währung zurückzusetzen.
begin
ThousandSeparator := '.'; DecimalSeparator := ','; ... end; |
AW: Zahl aus Datei einlesen , Format passt nicht
Zitat:
[EDIT] Ich denke da ist die Lösung von Baumina die beste Methode. |
AW: Zahl aus Datei einlesen , Format passt nicht
Zitat:
|
AW: Zahl aus Datei einlesen , Format passt nicht
Delphi-Quellcode:
Man kann ein beliebiges Trennzeichen wählen:
var
fs: TFormatSettings; s: string; e: Extended; begin fs.DecimalSeparator := '.'; s := '1234.567'; e := StrToFloat(s, fs); e := e * 2; s := FloatToStr(e, fs); ShowMessage(s); end;
Delphi-Quellcode:
var
fs: TFormatSettings; s: string; e: Extended; begin fs.DecimalSeparator := '~'; //Tilde s := '1234~567'; e := StrToFloat(s, fs); e := e * 2; s := FloatToStr(e, fs); ShowMessage(s); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 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-2025 by Thomas Breitkreuz