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
Thema durchsuchen
Ansicht
Themen-Optionen

Integer mit tausender trennzeichen ausgeben

Ein Thema von BBoy · begonnen am 17. Apr 2010 · letzter Beitrag vom 3. Nov 2023
Antwort Antwort
Seite 2 von 3     12 3      
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.057 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
44.033 Beiträge
 
Delphi 12 Athens
 
#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.
my Delphi wish list : BugReports/FeatureRequests
  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.465 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
44.033 Beiträge
 
Delphi 12 Athens
 
#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.
my Delphi wish list : BugReports/FeatureRequests

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

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.201 Beiträge
 
Delphi 11 Alexandria
 
#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.619 Beiträge
 
Delphi 12 Athens
 
#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
44.033 Beiträge
 
Delphi 12 Athens
 
#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.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 8. Sep 2020 um 10:03 Uhr)
  Mit Zitat antworten Zitat
Amateurprofi

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

AW: Re: Integer mit tausender trennzeichen ausgeben

  Alt 3. Nov 2023, 08:34
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:
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.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#20

AW: Integer mit tausender trennzeichen ausgeben

  Alt 3. Nov 2023, 12:11
Meine Lösung dafür ist immer S := Format('%.0n', [MyInteger + 0.0]);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 09:48 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