Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dreier Dezimalpunkt (https://www.delphipraxis.net/137558-dreier-dezimalpunkt.html)

mannewolff 23. Jul 2009 13:25


Dreier Dezimalpunkt
 
Hat jemand eine Routine zur Hand, wo man Dreier-Dezimalpunte ein- ausfügen kann.

1000,00 -> 1.000,00
1000000,00 -> 1.000.000,00

und umgekehrt.

DeddyH 23. Jul 2009 13:31

Re: Dreier Dezimalpunkt
 
Versuch es mal mit Format().

[edit] %f = ohne Tausendertrenner, %n = mit Tausendertrenner [/edit]

holliesoft 23. Jul 2009 13:37

Re: Dreier Dezimalpunkt
 
Zitat:

Zitat von DeddyH
Versuch es mal mit Format().

Naja, ich bin mal nicht so und gebe noch einen genaueren Hinweis (habe heute meinen sozialen Tag ;-) )

Delphi-Quellcode:

// Aus der Delphi 7 Hilfe...
// Das Argument muss ein Gleitkommawert sein. Der Wert wird in einen String der folgenden Form umgewandelt: "-d,ddd,ddd.ddd...". Das Format "n"
// entspricht dem Format "f", allerdings enthält der resultierende String Tausendertrennzeichen.

Var
  FormatierteZahl: String;
  Zahl: double;
// [...]
Zahl := 1000;
FormatierteZahl := Format('%8.2n', [Zahl]);
Gruß
Patrick

DeddyH 23. Jul 2009 13:38

Re: Dreier Dezimalpunkt
 
Ich war mit meinem Edit aber schneller :tongue: :lol:

holliesoft 23. Jul 2009 13:40

Re: Dreier Dezimalpunkt
 
Zitat:

Zitat von DeddyH
Ich war mit meinem Edit aber schneller :tongue: :lol:

Mist :cry:

[edit] Aber meines ist ausführlicher :) [/edit]

mannewolff 23. Jul 2009 15:09

Re: Dreier Dezimalpunkt
 
Ich habe jetzt

FloatToStrF(wert, ffnumber, 10, 2);

genommen.

Nun gibt es aber eine NumberformatException beim Rückwärtweg. Muss ich die Dezimaltrennzeichen jetzt händisch wieder rausnehmen.

a : Integer

edit.text := FloatToStrF(a, ffnumber, 10, 2);
...
a := StrToFloat(a);

Ich habe mal StrToFloazDef angeguckt, da steht aber: "Tausendertrennzeichen und Währungssymbole sind nicht zulässig. "

Lannes 23. Jul 2009 15:25

Re: Dreier Dezimalpunkt
 
Hallo,

imho ja. z.B oder StringReplace oder ...
Delphi-Quellcode:
s := '1.000.000,44';
while Pos(ThousandSeparator,s) > 0 do
  Delete(s,Pos(ThousandSeparator,s),1);
nehme an das Du nicht das Dezimaltrennzeichen meinst :wink:

rollstuhlfahrer 23. Jul 2009 17:01

Re: Dreier Dezimalpunkt
 
HI,

du kannst aber auch mittels StringReplace(s, ThousandSeperator, '', [rfReplaceAll]) das ganze auf einen Rutsch machen. Wenn es dir auf Geschwindigkeit ankommt, würde ich allerdings keinen der genannten Wege bevorzugen. Ich denke mal, wenn man da mit Zeigern und Move() arbeitet, ist man schneller.

Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 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 by Thomas Breitkreuz