AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Currency String nach Gleitkomma convertieren
Thema durchsuchen
Ansicht
Themen-Optionen

Currency String nach Gleitkomma convertieren

Ein Thema von Alfonso · begonnen am 26. Nov 2009 · letzter Beitrag vom 27. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
Alfonso

Registriert seit: 10. Jan 2006
242 Beiträge
 
Delphi 11 Alexandria
 
#1

Currency String nach Gleitkomma convertieren

  Alt 26. Nov 2009, 09:18
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
Alfonso
Seit Turbo Pascal 3.0 dabei!
Ewiger Pascal Fan!
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Currency String nach Gleitkomma convertieren

  Alt 26. Nov 2009, 09:37
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
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Currency String nach Gleitkomma convertieren

  Alt 26. Nov 2009, 09:43
Auf einem englischen System dürfte das aber nicht reichen, dem müsste man dann mitteilen, dass das Komma der DecimalSeparator ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Currency String nach Gleitkomma convertieren

  Alt 26. Nov 2009, 10:26
Man könnte es ( nach Einstellung Separator/Tausendertrenner) auch mit Val() versuchen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#5

Re: Currency String nach Gleitkomma convertieren

  Alt 26. Nov 2009, 10:42
Zitat von mkinzler:
Man könnte es ( nach Einstellung Separator/Tausendertrenner) auch mit Val() versuchen
VAL beachtet dieses nicht, denn dort sind diese Werte mit dem amerikanischem "Standard" hardcodiert.

Val Str Write WriteLn nehmen immer komma='.'

ist praktisch, da man so sprachunabhängig Speichern/Laden kann

( darum auch http://www.delphipraxis.net/internal...104276#1104276 )
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Currency String nach Gleitkomma convertieren

  Alt 26. Nov 2009, 13:52
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
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Currency String nach Gleitkomma convertieren

  Alt 26. Nov 2009, 16:20
@Wolfgang Mix
na dann hast Du aber Glück gehabt

Delphi-Quellcode:
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;
und ich würde
if SL[i] not in [0..9,DecimalSeperator]...... nutzen

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#8

Re: Currency String nach Gleitkomma convertieren

  Alt 26. Nov 2009, 16:33
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
if not (SL[i] in ['0'..'9', DecimalSeperator]) then Delete(... Ansonsten muß man es eben sprachunabhängig behandeln.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Currency String nach Gleitkomma convertieren

  Alt 26. Nov 2009, 16:35
Zitat von p80286:
@Wolfgang Mix
na dann hast Du aber Glück gehabt

Delphi-Quellcode:
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;
und ich würde
if SL[i] not in [0..9,DecimalSeperator]...... nutzen

Gruß
K-H
Und wenn dann der Decimalseparator auf "." gestellt ist, kommt 123,45678 heraus und nicht 123456,78.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#10

Re: Currency String nach Gleitkomma convertieren

  Alt 26. Nov 2009, 16:36
Und wenn wir dann auch noch von Dollarn, und nicht von Euronen reden...
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz