![]() |
Integer mit tausender trennzeichen ausgeben
Hallo,
ich möchte eine integer auf einem label ausgeben aber mit tausender trennzeichen. Also so: 4.356.567 Das soll wohl mit Format gehen, aber ich bekomme das einfach nicht hin, wäre nett wenn jemand helfen könnte :) |
Re: Integer mit tausender trennzeichen ausgeben
![]() OK, das "Tausendertrennzeichen" ist ein zu langes Wort, für die DP-Suche, aber ![]() Sowas nutze ich seit vielen Jahren:
Delphi-Quellcode:
S := Format('%.0n', [MyInteger / 1]);
|
Re: Integer mit tausender trennzeichen ausgeben
vielen dank! Funktioniert prima :)
|
Re: Integer mit tausender trennzeichen ausgeben
@himitsu:
Deine Suchwortkombination bringt aber auch nix :( |
Re: Integer mit tausender trennzeichen ausgeben
Hab auch noch was etwas komplizierteres, aber funzt :)
Delphi-Quellcode:
function PointDelimiter(Argument: string; TrennChar: char): string;
var n,i: integer; begin Result := Argument; n := Length(Result); if n > 3 then begin i := 0; While n > 0 do begin inc(i); if (i >= 3) and (n > 1) then begin Insert(TrennChar,Result,n); i := 0; end; dec(n); end; end; end; function IntToStrWithDots(Int: Int64): string; begin Str(Int, Result); Result := PointDelimiter(Result, '.'); end; //Anwendung: IntToStrWithDots(1000000000) //gibt '1.000.000.000' aus |
Re: Integer mit tausender trennzeichen ausgeben
Wenn die entsprechende Konstante gesetzt ist ( thousandseparator), sollte es auch mit einem simplen
IntToStr() gehen |
Re: Integer mit tausender trennzeichen ausgeben
Liste der Anhänge anzeigen (Anzahl: 1)
IntToStr aka CvtInt gibt niemals Tausendertrennzeichen zurück, da dieses in der Funktion nicht eingebaut ist.
Zitat:
|
Re: Integer mit tausender trennzeichen ausgeben
FormatFloat wäre auch noch ein Kandidat. Der Formatierungsstring entsprich dem, der bei Tabellenfeldern verwendet wird. Hier wäre das
Delphi-Quellcode:
GanzZahlMitTausenderTrennzeichen := FormatFloat('0,', GanzZahl);
|
AW: Integer mit tausender trennzeichen ausgeben
Delphi-Quellcode:
function NewIntToStr(aValue: int64; Dots: Char=#0): String;
var ii : integer; begin Result := IntToStr(aValue); if Dots < ' ' then exit; ii := length(Result) - 2; while ii > 1 do begin Insert(Dots,Result,ii); dec(ii,3); end; end; |
AW: Integer mit tausender trennzeichen ausgeben
Da NewIntToStr doch vorallem für die Tausenderpunkte da ist, sollte dann Dots nicht besser standardmäßig mit ThousandSeparator vorbelegt sein?
Und warum "New"? Die Funktion ist doch nicht "neu", sondern "anders" ... halt mit "punkten". PS:
Delphi-Quellcode:
:stupid:
NewIntToStr(-123456798, '.')
|
AW: Integer mit tausender trennzeichen ausgeben
Zitat:
Ergebnis ist "-.100" Besser so:
Delphi-Quellcode:
function NewIntToStr(aValue: int64; Dots: Char=#0): String;
var ii : integer; begin Result := IntToStr(Abs(aValue)); if Dots < ' ' then exit; ii := length(Result) - 2; while ii > 1 do begin Insert(Dots,Result,ii); dec(ii,3); end; if aValue<0 then Result:='-'+Result; end; |
AW: Integer mit tausender trennzeichen ausgeben
Oder eine der "fertigen" Lösungen. :angke2:
|
AW: Re: Integer mit tausender trennzeichen ausgeben
Zitat:
Dieser Code ist sehr schön, kurz und präzise. Ich persönlich ziehe (neuerdings) auch Format dem FormatFloat vor, weil man die Ausgaben vollständig formulieren kann und sich damit Ketten wie
Delphi-Quellcode:
ersparen kann und man gerade bei den Leerzeichen Fehler vermeidet. Zudem macht es das externe Ablegen/Erweitern mit anderen Sprachen einfacher.
Begin
Msg:= FormatFloat('0,', Pos) + ' von ' + FormatFloat('0,' fCount) + ' Dateien wurden fertiggestellt. [' + IntToStr(fRemain) + ' Sek. verbleibend]'; Msg:= Format('%.0n von %.0n Dateien wurden fertiggestellt. [%.0n Sek. verbleibend]', [Pos / 1, fCount / 1, fRemain / 1]); End; Deinen Code findet man gleich als erstes auch über google. Deshalb hätte ich noch eine klitzekleine Bitte/Verbesserungsvorschlag: Da ich nicht aufmerksam las und
Delphi-Quellcode:
- jedenfalls bei mir - keinerlei Fehler anzeigt, habe ich die Integer-Werte übergeben und mich fast 2h gewundert, dass nichts klappt. Und das genau so lange, bis mir auffiel, dass aus einem Integer- ein Gleitzahl-Wert durch
Format();
Delphi-Quellcode:
gemacht werden muss. Ich denke, es würde zukünftigen Suchern/Lesern erheblich vereinfachen, wenn Du das nochmal dort auffällig(er) anmerken könntest!
/1
:dp: Ich habe in der Hilfe nichts zur Zeit gefunden. Kann man mit
Delphi-Quellcode:
auch gleich Ausgaben wie
Format();
Delphi-Quellcode:
erzeugen.
[00:25]
|
AW: Re: Integer mit tausender trennzeichen ausgeben
Zitat:
|
AW: Re: Integer mit tausender trennzeichen ausgeben
Nein.
Der FormatString hat nichts mit Sprachen zu tun. Der ist immer quasi englisch, aber beim Result sieht es anders aus. Zitat:
Bleibt also nur Mathematik
Delphi-Quellcode:
Format('%2.d:%2.d', [d * 24, (d * 24 * 60) mod 60]) // TTime, bzw. Trunc oder TimeOf für TDateTime
Format('%2.d:%2.d', [HourOf(d), MinuteOf(d)]) |
AW: Re: Integer mit tausender trennzeichen ausgeben
Zitat:
|
AW: Integer mit tausender trennzeichen ausgeben
Als Tausendertrenner? Sicher?
|
AW: Integer mit tausender trennzeichen ausgeben
Ach Mist, falschrum verstanden.
Dort wird das Tausenderkomma verwendet, aber das hat nicht "direkt" mit diesem
Delphi-Quellcode:
hier zu tun,
.
aber ja, ausgegeben wird jeweils das Dezimaltrennzeichen im globalen oder übergebenen FormatSettings. Beim FormatString im FloatFormat und Dergleichen ist das "eindeutiger" und hängt unmittelbar zusammen. Format/Dezimal-"Punkt"
Delphi-Quellcode:
= verwende das Char aus FormatSettings.DecimalSeparator als Dezimaltrennzeichen
'###.###'
und das Format-"Komma"
Delphi-Quellcode:
= verwende das Char aus FormatSettings.ThousandSeparator als Tausendertrennzeichen
'###,###'
und das Zeichen
Delphi-Quellcode:
= verwende immer den String/Zeichen
'###"."###'
|
AW: Re: Integer mit tausender trennzeichen ausgeben
Zitat:
Hab ich per Zufall gefunden, und die Lösung gekriegt, für ein Problem, das ich hatte. Danke dafür. |
AW: Integer mit tausender trennzeichen ausgeben
Meine Lösung dafür ist immer
Delphi-Quellcode:
S := Format('%.0n', [MyInteger + 0.0]);
|
AW: Integer mit tausender trennzeichen ausgeben
Wer sich an neumodischen Kram traut kann es auch so schreiben:
Delphi-Quellcode:
S := Format('%.0n', [MyInteger.ToDouble]);
|
AW: Integer mit tausender trennzeichen ausgeben
Zitat:
|
AW: Integer mit tausender trennzeichen ausgeben
Zitat:
Trotzdem Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 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-2025 by Thomas Breitkreuz