![]() |
Currency String nach Gleitkomma convertieren
Hi,
ich habe einen String der Form "123.456,78 €". Ich möchte es in eine Gleitkommavariable konvertieren, um damit rechnen zu können. Welche Funktion setze ich dafür ein, bzw. wie mache es es am geschicktesten? Gruß Alfonso |
Re: Currency String nach Gleitkomma convertieren
Wenn du dafür keine fertige Funktion findest, schreibe dir eine.
Einfach mit Delete den Punkt, das Leerzeichen und das Eurozeichen löschen. Gruß Wolfgang |
Re: Currency String nach Gleitkomma convertieren
Auf einem englischen System dürfte das aber nicht reichen, dem müsste man dann mitteilen, dass das Komma der DecimalSeparator ist.
|
Re: Currency String nach Gleitkomma convertieren
Man könnte es ( nach Einstellung Separator/Tausendertrenner) auch mit Val() versuchen
|
Re: Currency String nach Gleitkomma convertieren
Zitat:
Val Str Write WriteLn nehmen immer komma='.' ist praktisch, da man so sprachunabhängig Speichern/Laden kann :stupid: ( darum auch ![]() |
Re: Currency String nach Gleitkomma convertieren
Bei mir funktioniert folgender Ansatz, der für das Euroformat ausreicht.
Wenn nicht, dann müssen wir den Code erweitern.
Delphi-Quellcode:
function EuroStringToStr(s1:String):real;
var i:integer; begin for i:=1 to length(s1) do begin if (s1[i]='.') or (s1[1]=' ') or (s1[i]='€') then delete (s1,i,1); end; result:=StrToFloat(s1); end; procedure TForm1.Button1Click(Sender: TObject); var s1,s2:string; begin s1:=edit1.Text; s2:=FloatToStr(EuroStringToStr(s1)); Edit2.Text:=s2; end; end. Gruß Wolfgang |
Re: Currency String nach Gleitkomma convertieren
@Wolfgang Mix
na dann hast Du aber Glück gehabt
Delphi-Quellcode:
und ich würde
function EuroStringToStr(s1:String):real;
var i:integer; begin for i:=length(s1) downto 1 do // mit downto läßt Du verbrannte Erde HINTER Dir begin if (s1[i]='.') or (s1[1]=' ') or (s1[i]='€') then delete (s1,i,1); end; result:=StrToFloat(s1); end;
Delphi-Quellcode:
nutzen
if SL[i] not in [0..9,DecimalSeperator]......
Gruß K-H |
Re: Currency String nach Gleitkomma convertieren
Das Problem ist ja erstmal: Ist das "123.456,78 €" immer so, oder kann es sprachabhängig auch mal "123,456.78 €" sein.
Wenn dieses sprachabhängig ist, dann
Delphi-Quellcode:
Ansonsten muß man es eben sprachunabhängig behandeln.
if not (SL[i] in ['0'..'9', DecimalSeperator]) then Delete(...
|
Re: Currency String nach Gleitkomma convertieren
Zitat:
|
Re: Currency String nach Gleitkomma convertieren
Und wenn wir dann auch noch von Dollarn, und nicht von Euronen reden... :freak:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 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