Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Currency String nach Gleitkomma convertieren (https://www.delphipraxis.net/143933-currency-string-nach-gleitkomma-convertieren.html)

Wolfgang Mix 26. Nov 2009 16:47

Re: Currency String nach Gleitkomma convertieren
 
Ich denke, das müsste dem TE jetzt weiterhelfen :)

Gruß

Wolfgang

DeddyH 26. Nov 2009 17:09

Re: Currency String nach Gleitkomma convertieren
 
Naja, einen Vorschlag hätte ich noch:
Delphi-Quellcode:
function EuroStringToStr(s1: String; DecSep: char = ','): double;
var i: integer;
begin
  for i:= length(s1) downto 1 do
    if not (s1[i] in ['0'..'9',DecSep]) then
      Delete(s1,i,1);
  Result := StrToFloat(s1);
end;
Damit kann man sich dann aussuchen, ob fix das Komma oder doch lieber der Dezimalseparator genommen werden soll.

Wolfgang Mix 26. Nov 2009 18:52

Re: Currency String nach Gleitkomma convertieren
 
Gefällt mir jetzt so sehr gut. Wollte nur den Anstoss geben :)

Namenloser 26. Nov 2009 19:00

Re: Currency String nach Gleitkomma convertieren
 
Ich frage mich allerdings, ob es wirklich sinnvoll ist, alles außer den erlaubten Zeichen einfach zu löschen. Stellt euch vor, einer ruft sowas auf:
Delphi-Quellcode:
EuroStringToStr('1ABC23,5   67.89 € wuppdi')
In dem Falle wäre es schon sinnvoll, eine Fehlermeldung zu erhalten...

Wolfgang Mix 26. Nov 2009 19:06

Re: Currency String nach Gleitkomma convertieren
 
Hast recht, ausserdem sollten wir jetzt noch den Funktionsnamen von EuroStringToStr
auf EuroStringToFloat ändern

Alfonso 26. Nov 2009 20:40

Re: Currency String nach Gleitkomma convertieren
 
Eine wichtige Sache habt Ihr noch vergessen: Das Minuszeichen! Es gibt auch Leute die Schulden machen :wink:
Delphi-Quellcode:
function EuroStringToFloat(s1: String; DecSep: char = ','): double;
var i: integer;
begin
  for i:= length(s1) downto 1 do
    if not (s1[i] in ['0'..'9','-',DecSep]) then
      Delete(s1,i,1);
  Result := StrToFloat(s1);
end;

Alfonso 26. Nov 2009 20:42

Re: Currency String nach Gleitkomma convertieren
 
Zitat:

Zitat von NamenLozer
Stellt euch vor, einer ruft sowas auf:
Delphi-Quellcode:
EuroStringToStr('1ABC23,5   67.89 € wuppdi')
In dem Falle wäre es schon sinnvoll, eine Fehlermeldung zu erhalten...

Tja, wie stellt man jetzt fest, ob der eingegebene String eine gültige Zahl enthält ... ? :gruebel:

Wolfgang Mix 26. Nov 2009 21:21

Re: Currency String nach Gleitkomma convertieren
 
@Alfonso:
Zitat:

Eine wichtige Sache habt Ihr noch vergessen: Das Minuszeichen! Es gibt auch Leute die Schulden machen
Haben wir nicht :)
Die Funkton klappt auch mit '-' als 1.Zeichen :mrgreen:

Grüß

Wolfgang

Alfonso 27. Nov 2009 20:00

Re: Currency String nach Gleitkomma convertieren
 
Zitat:

Zitat von Wolfgang Mix
@Alfonso:
Zitat:

Eine wichtige Sache habt Ihr noch vergessen: Das Minuszeichen! Es gibt auch Leute die Schulden machen
Haben wir nicht :)
Die Funkton klappt auch mit '-' als 1.Zeichen :mrgreen:

Das verstehe ich aber nicht. Die Schleife geht runter bis zum 1.ten Zeichen, und da das '-' nicht im Set ['0'..'9',DecSep] war, wurde es doch gelöscht, oder bin ich blind. 8-)

Gruß
Alfonso

Wolfgang Mix 27. Nov 2009 20:21

Re: Currency String nach Gleitkomma convertieren
 
Sorry, hast natürlich recht, hatte ich nicht getestet, nur mit der 1. Version.

Gruß

Wolfgang


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:22 Uhr.
Seite 2 von 2     12   

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