Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Integer mit tausender trennzeichen ausgeben (https://www.delphipraxis.net/150464-integer-mit-tausender-trennzeichen-ausgeben.html)

Amateurprofi 26. Mai 2015 16:38

AW: Integer mit tausender trennzeichen ausgeben
 
Zitat:

Zitat von derMischka (Beitrag 1303077)
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;

Versuch das mal mit NewIntToStr(-100,'.');
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;

himitsu 26. Mai 2015 17:02

AW: Integer mit tausender trennzeichen ausgeben
 
Oder eine der "fertigen" Lösungen. :angke2:

Schwedenbitter 28. Sep 2015 14:06

AW: Re: Integer mit tausender trennzeichen ausgeben
 
Zitat:

Zitat von himitsu (Beitrag 1015372)
...
Sowas nutze ich seit vielen Jahren:
Delphi-Quellcode:
S := Format('%.0n', [MyInteger / 1]);

@himitsu
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:
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;
ersparen kann und man gerade bei den Leerzeichen Fehler vermeidet. Zudem macht es das externe Ablegen/Erweitern mit anderen Sprachen einfacher.

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:
Format();
- 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
Delphi-Quellcode:
/1
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!
:dp:

Ich habe in der Hilfe nichts zur Zeit gefunden. Kann man mit
Delphi-Quellcode:
Format();
auch gleich Ausgaben wie
Delphi-Quellcode:
[00:25]
erzeugen.

PeterPanino 6. Sep 2020 18:10

AW: Re: Integer mit tausender trennzeichen ausgeben
 
Zitat:

Zitat von himitsu (Beitrag 1015372)

Sowas nutze ich seit vielen Jahren:
Delphi-Quellcode:
S := Format('%.0n', [MyInteger / 1]);

Ich nehme an, im Englischen wird statt des Punktes ein Komma ausgegeben? (Bei regionalen Default-Einstellungen)

himitsu 6. Sep 2020 20:07

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:

Zitat von Schwedenbitter (Beitrag 1317119)
Ich habe in der Hilfe nichts zur Zeit gefunden. Kann man mit
Delphi-Quellcode:
Format();
auch gleich Ausgaben wie
Delphi-Quellcode:
[00:25]
erzeugen.

SysUtils.Format und string.Format bieten leider keine Formatierungen für Zeitangaben ... auschließlich nummerische Formatierungen.

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)])

TigerLilly 8. Sep 2020 06:26

AW: Re: Integer mit tausender trennzeichen ausgeben
 
Zitat:

Zitat von PeterPanino (Beitrag 1473097)
Zitat:

Zitat von himitsu (Beitrag 1015372)

Sowas nutze ich seit vielen Jahren:
Delphi-Quellcode:
S := Format('%.0n', [MyInteger / 1]);

Ich nehme an, im Englischen wird statt des Punktes ein Komma ausgegeben? (Bei regionalen Default-Einstellungen)

Ja, richtig. Format('%.0n' formatiert mit 1000er Trennzeichen. Danke an DaddyH für den Hinweis.

DeddyH 8. Sep 2020 07:01

AW: Integer mit tausender trennzeichen ausgeben
 
Als Tausendertrenner? Sicher?

himitsu 8. Sep 2020 08:59

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

Amateurprofi 3. Nov 2023 07:34

AW: Re: Integer mit tausender trennzeichen ausgeben
 
Zitat:

Zitat von himitsu (Beitrag 1015372)
Hier im Forum suchenInteger Tausendertrennzeichen

OK, das "Tausendertrennzeichen" ist ein zu langes Wort, für die DP-Suche,
aber Delphi-Referenz durchsuchenInteger Tausendertrennzeichen (rechts oben auf "DelphiPRAXiS" umschalten)


Sowas nutze ich seit vielen Jahren:
Delphi-Quellcode:
S := Format('%.0n', [MyInteger / 1]);

So einfach, aber muss man erstmal drauf kommen.
Hab ich per Zufall gefunden, und die Lösung gekriegt, für ein Problem, das ich hatte.
Danke dafür.

Delphi.Narium 3. Nov 2023 11:11

AW: Integer mit tausender trennzeichen ausgeben
 
Meine Lösung dafür ist immer
Delphi-Quellcode:
S := Format('%.0n', [MyInteger + 0.0]);


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr.
Seite 2 von 3     12 3      

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