AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Integer mit tausender trennzeichen ausgeben

Integer mit tausender trennzeichen ausgeben

Ein Thema von BBoy · begonnen am 17. Apr 2010 · letzter Beitrag vom 8. Sep 2020
Antwort Antwort
Seite 2 von 2     12
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
899 Beiträge
 
Delphi XE2 Professional
 
#11

AW: Integer mit tausender trennzeichen ausgeben

  Alt 26. Mai 2015, 17:38
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;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....

Geändert von Amateurprofi (26. Mai 2015 um 17:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
37.055 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Integer mit tausender trennzeichen ausgeben

  Alt 26. Mai 2015, 18:02
Oder eine der "fertigen" Lösungen. :angke2:
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#13

AW: Re: Integer mit tausender trennzeichen ausgeben

  Alt 28. Sep 2015, 15:06
...
Sowas nutze ich seit vielen Jahren:
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 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 /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!


Ich habe in der Hilfe nichts zur Zeit gefunden. Kann man mit Format(); auch gleich Ausgaben wie [00:25] erzeugen.
Alex Winzer
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.284 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: Re: Integer mit tausender trennzeichen ausgeben

  Alt 6. Sep 2020, 19:10

Sowas nutze ich seit vielen Jahren:
S := Format('%.0n', [MyInteger / 1]);
Ich nehme an, im Englischen wird statt des Punktes ein Komma ausgegeben? (Bei regionalen Default-Einstellungen)
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
37.055 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Re: Integer mit tausender trennzeichen ausgeben

  Alt 6. Sep 2020, 21:07
Nein.

Der FormatString hat nichts mit Sprachen zu tun.
Der ist immer quasi englisch, aber beim Result sieht es anders aus.


Ich habe in der Hilfe nichts zur Zeit gefunden. Kann man mit Format(); auch gleich Ausgaben wie [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)])
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu ( 6. Sep 2020 um 21:23 Uhr)
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
765 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Re: Integer mit tausender trennzeichen ausgeben

  Alt 8. Sep 2020, 07:26

Sowas nutze ich seit vielen Jahren:
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.

Geändert von TigerLilly ( 8. Sep 2020 um 08:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.094 Beiträge
 
Delphi 10.3 Rio
 
#17

AW: Integer mit tausender trennzeichen ausgeben

  Alt 8. Sep 2020, 08:01
Als Tausendertrenner? Sicher?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
37.055 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: Integer mit tausender trennzeichen ausgeben

  Alt 8. Sep 2020, 09:59
Ach Mist, falschrum verstanden.
Dort wird das Tausenderkomma verwendet, aber das hat nicht "direkt" mit diesem . 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" '###.###' = verwende das Char aus FormatSettings.DecimalSeparator als Dezimaltrennzeichen
und das Format-"Komma" '###,###' = verwende das Char aus FormatSettings.ThousandSeparator als Tausendertrennzeichen
und das Zeichen '###"."###' = verwende immer den String/Zeichen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu ( 8. Sep 2020 um 10:03 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf