Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism wie erreiche ich Formatierung 123.456,789? (https://www.delphipraxis.net/69472-wie-erreiche-ich-formatierung-123-456-789-a.html)

gfjs 15. Mai 2006 18:37


wie erreiche ich Formatierung 123.456,789?
 
Guten Abend, allerseite.

Ich schaffe es nicht, eine Formatierung mit 1000er-Trennzeichen hin zu bekommen.

Delphi-Quellcode:
System.Globalization.NumberFormatInfo.NumberGroupSeparator('.');
TextBox2.Text := d.ToString('g');
bringt die Fehlermeldung:

Zitat:

E2233 Auf Eigenschaft 'NumberGroupSeparator' kann hier nicht zugegriffen werden
Es war schon schwierig genug, in der Hilfe auf NumberFormatInfo zu stoßen, wenn man nicht genau weiß, wonach man suchen soll. Jetzt bin ich endlich bis zum NumberGoupSeperator vorgestoßen, aber die Beispiele in c++ und c# helfen mir leider nicht weiter. Aber vielleicht kann mir ja von Euch jemand hilfreich unter die Arme greifen?!

Vielen Dank im Voraus.

Jürgen

SubData 15. Mai 2006 18:38

Re: wie erreiche ich Formatierung 123.456,789?
 
Ich weiß nicht, ob es unter .Net auch die Funktion FormatFloat gibt...
Wäre aber evtl. ne Suche wert :)

Dax 15. Mai 2006 18:42

Re: wie erreiche ich Formatierung 123.456,789?
 
Wie wärs damit?

Delphi-Quellcode:
var FormatInfo: NumberFormatInfo;

FormatInfo := NumberFormatInfo.Create;
FormatInfo.NumberGroupSeparator := '.';
TextBox2.Text := d.ToString('g', FormatInfo);

gfjs 15. Mai 2006 19:20

Re: wie erreiche ich Formatierung 123.456,789?
 
@ SubData

Hatte ich schon versucht: "nicht deklarierter Bezeichner ....". Gibt's zwar in .NET, aber nur in VCL-, nicht in WinForms-Anwendungen.

@ Dax

Klappt leider nicht. Mit

Delphi-Quellcode:
TextBox2.Text := d.ToString('g');
erhalte ich "123456,789", mit Deinem Vorschlag das gleiche Ergebnis nur mit einem Dezimalpunkt.

Trotzdem vielen Dank für Eure Hilfe und noch einen schönen Abend.

Jürgen

PS.

Hab noch ein wenig herumprobiert:

statt ('g',FormatInfo) jetzt ('n',FormatInfo):

Delphi-Quellcode:
var FormatInfo: NumberFormatInfo;

FormatInfo := NumberFormatInfo.Create;
FormatInfo.NumberGroupSeparator := '.';
TextBox2.Text := d.ToString('n', FormatInfo);
ergibt 123.456.789 - sehr erstaunlich, denn laut Hilfe sollte sollte bei Übereinstimmung von NumberGroupSeperator und NumberDecimalSeperator eine ArgumentExeption ausgelöst werden.

So hat's dann endlich geklappt:

Delphi-Quellcode:
var FormatInfo: NumberFormatInfo;

FormatInfo := NumberFormatInfo.Create;
FormatInfo.NumberGroupSeparator := '.';
FormatInfo.NumberDecimalSeperator := ',';
TextBox2.Text := d.ToString('n', FormatInfo);

Khabarakh 15. Mai 2006 20:16

Re: wie erreiche ich Formatierung 123.456,789?
 
Warum willst du überhaupt an den Globalization-Einstellungen herumfummeln und übernimmst nicht einfach die, welche der User in Windows definiert hat?

gfjs 16. Mai 2006 03:08

Re: wie erreiche ich Formatierung 123.456,789?
 
@ khabarakh

Guten Morgen, Sebastian.

Will ich ja eigentlich gar nicht - es zwingt mich die schiere Not. :-D

Spaß beiseite - ich habe echte Probleme mit der Formatierung unter .NET. Zuerst wollte ich ja nur den Punkt als 1000er-Trennzeichen haben. Die Folge war, dass ich als Ergebnis 123.456.798 erhielt, obwohl auf meinem Rechner das Komma als Dezimaltrenner eingestellt ist. Was mich - wie schon erwähnt - wundert, weil bei übereinstimmenden NumberDecimalSeperator und NumberGrupSeperator eigentlich eine ArgumentExeption ausgelöst werden sollte. Erst mit Einfügen der Zeile
Delphi-Quellcode:
FormatInfo.NumberDecimalSeperator := ',';
erhielt ich das gewünschte (Teil)ergebnis.

Leider habe ich trotz eifrigen Suchens noch nicht die gewünschten Informationen für die Formatierung gefunden. Mit
Delphi-Quellcode:
TextBox2.Text := d.ToString('n',FormatInfo);
erhalte ich nur die Standardformatierung mit zwei Nachkommastellen und ich habe noch nicht herausgefunden, wie ich die Anzahl der Kommastellen verändern kann. Vielleicht kannst Du mir da weiterhelfen?!

Vielen Dank im Voraus und noch einen schönen Tag.

Jürgen

Heffalump 16. Mai 2006 12:24

Re: wie erreiche ich Formatierung 123.456,789?
 
So müsste es auch gehen:

Delphi-Quellcode:
procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);
var lvTest: System.Double;
begin
  lvTest := 123456789 / 1000;
  MessageBox.Show(lvTest.ToString('0,000.000'));
end;

Khabarakh 16. Mai 2006 12:37

Re: wie erreiche ich Formatierung 123.456,789?
 
Zitat:

Zitat von gfjs
Will ich ja eigentlich gar nicht - es zwingt mich die schiere Not. :-D

Hatte ich mir schon fast gedacht ;) .
Wenn du den "N"-Formatter benutzt, musst du überhaupt nichts an den Einstellungen ändern. Eine fixe Angabe der Nachkommastellen (Default ist 2, wie du ja schon selbst bemerkt hast) fügst du einfach hinten an:
Delphi-Quellcode:
d.ToString('n3');
Das entspricht dann ziemlich genau Heffalumps Lösung.

gfjs 17. Mai 2006 03:17

Re: wie erreiche ich Formatierung 123.456,789?
 
Guten Morgen und vielen Dank!

Ist ja recht einfach - wenn man's weiß. Schön wäre halt, wenn es in der Hilfe auch so einfach zu finden wäre. Entweder steht's so nicht drin oder ich hab's bei der Menge der Seiten, die ich durchsucht habe, einfach übersehen.

Ich wünsche Euch noch einen schönen Tag.

Jürgen


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