Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Aus Zahltext Zahl machen und zurück (https://www.delphipraxis.net/72382-aus-zahltext-zahl-machen-und-zurueck.html)

torud 29. Jun 2006 13:57


Aus Zahltext Zahl machen und zurück
 
Hallo Wissende,

das hört sich jetzt vielleicht verrückt an, aber bastel gerade an einem Bestellscript, welches durch JaveScript verarbeitet werden soll. JS kann leider nur mit Zahlen umgehen, die so aussehen: 1.23 enstspricht einer 1,23. Nix dramatisches, aber ich will nun folgendes tun:

Der User gibt in ein Edit eine 1 für ein Euro ein. Damit das Ganze schön aussieht, habe ich versucht aus der 1 ein 1.00 zu machen. Das habe ich durch Float und Replacstring erledigt. Polnisch - ich weiss, aber mir fiel nix besseres ein.

Nun will ich aber, wenn der User mal den Preis ändern will, den Wert zurück ins Edit schreiben. Das ist auch kein Problem, weil es einfach nur Text ist. Das eigentliche Problem besteht darin, den Wert dann erneut in meine Variable zu bekommen, da der Compiler meint, dass 1.00 oder 1,00 kein Integerwert ist.

So schreibe ich den Wert in den StringArray:
Delphi-Quellcode:
   myData[1,akt_prod]:=StringReplace((FloatToStrF(strtoint(ed_p_prize.text),ffFixed,10,2)),',','.',[rfReplaceAll, rfIgnoreCase]);
Und so fülle ich das Editfeld wieder:
Delphi-Quellcode:
MyData[1,i]:=StringReplace(MyData[1,i],'.',',',[rfReplaceAll, rfIgnoreCase]);
ed_p_prize.Text := MyData[1,i];
Tut mir leid, wenn ich Euch mit solchem Pippikram belästie, aber mir fällt einfach nix ein, wie es lösen könnte, ich such natürlich selbst noch weiter.

H4ndy 29. Jun 2006 14:22

Re: Aus Zahltext Zahl machen und zurück
 
Der Compiler hat völlig recht wenn er behauptet, das 1(,.)00 kein Integerwert ist.
Sobald das Kommatrennzeichen vorkommt, ist es für Delphi eine Fließkommazahl (Real, Extended, ...).

Welches Zeichen dabei angenommen wird (. oder ,) steht in den globalen Spracheinstellungen. Meist ist es aber der Punkt. Das kannst du ändern indem du mit TFormatSettings arbeitest und dann natürlich anstelle von StrToInt eben StrToFloat benutzt (was übrigends auch mit Integerwerten klar kommt).


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:18 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