AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FormatFileSize

Ein Thema von MicMic · begonnen am 27. Jul 2018 · letzter Beitrag vom 29. Jul 2018
Antwort Antwort
Schokohase
(Gast)

n/a Beiträge
 
#1

AW: FormatFileSize

  Alt 28. Jul 2018, 08:13
Da dieses Thema ja stark von der Oberlehrerfraktion besetzt ist:

Wenn man einen Wert rundet, dann werden nach Selbigem niemals die Nachkommastellen entfernt.
Code:
232,0034383 auf 2 Nachkommastellen gerundet: 232,00
Du kannst dir also diesen Zirkus sparen.
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: FormatFileSize

  Alt 28. Jul 2018, 08:19
Da dieses Thema ja stark von der Oberlehrerfraktion besetzt ist:

Wenn man einen Wert rundet, dann werden nach Selbigem niemals die Nachkommastellen entfernt.
Code:
232,0034383 auf 2 Nachkommastellen gerundet: 232,00
Du kannst dir also diesen Zirkus sparen.
Das Thema (bei mir *g) ist ja, da ich nicht weis wie ich mit Format/FormatFloat abrunden kann. Da wird ja aufgerundet und wie ich das jetzt verstanden habe, soll man bei einer Anzeige von Dateigrößen nicht aufrunden. Windows rundet ab, bei dem einem Beispielwert (weiter oben) 1,09. Format/FormatFloat macht 1,1 und der bekannte TotalCommander macht ne "1" (mit der Bezeichnung "M") raus. Ich mach den Zirkus ja nicht Wir alle

Michael
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FormatFileSize

  Alt 28. Jul 2018, 09:54
da ich nicht weis wie ich abrunden kann
Na da kann Dir geholfen werden, mitSetRoundMode() ist so ein Verhalten steuerbar.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.771 Beiträge
 
Delphi 12 Athens
 
#4

AW: FormatFileSize

  Alt 28. Jul 2018, 10:13
Na da kann Dir geholfen werden, mitSetRoundMode() ist so ein Verhalten steuerbar.
Kannst du mal den Code zeigen, mit dem das funktioniert?

Ich würde das explizit ausprogrammieren:

Delphi-Quellcode:
  
  if <mit Punkt> then begin
    // sprachinvariant, immer mit Punkt
    fs := TFormatSettings.Invariant;
  end
  else begin
    // mit Komma oder was im Windows halt gerade eingestellt ist
    fs := FormatSettings;
  end;
  result := Format('%s %s', [FormatFloat('0.##', Floor(100*_size)/100, fs), s]);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: FormatFileSize

  Alt 28. Jul 2018, 10:22
Kannst du mal den Code zeigen, mit dem das funktioniert?
Ausführlicher Beispiel Code ist doch im Link? Vielleicht habe ich das was gefordert ist auch falsch Verstanden, wobei es bei auf/ab-runden nicht viel falsch zu verstehen gibt. Du meinst bestimmt seinen Code, ich meinte generell auf/abrunden.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.771 Beiträge
 
Delphi 12 Athens
 
#6

AW: FormatFileSize

  Alt 28. Jul 2018, 10:42
Ich meine sowas:
Delphi-Quellcode:
var
  _size: Extended;
  orgMode: TRoundingMode;
begin
  _size := 1.0957031;
  orgMode := SetRoundMode(rmDown);
  try
    Assert(FormatFloat('0.##', _size, TFormatSettings.Invariant) = '1.09', 'Abrunden klappt nicht!');
  finally
    SetRoundMode(orgMode);
  end;
end;
Basierend auf dieser Aussage:
da ich nicht weis wie ich mit Format/FormatFloat abrunden kann.
und dieser:
Na da kann Dir geholfen werden, mitSetRoundMode() ist so ein Verhalten steuerbar.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: FormatFileSize

  Alt 28. Jul 2018, 11:32
Da ich mich gleich an Strand klatsche hab ich keine Zeit mehr, aber mein Vorschlag beinhaltet Beispiel Code, wenn man nichts rundet, rundet man nichts. Also wo kommt Round() vor?

Falls ich darauf noch Lust haben sollte, schreibe ich was mit Delphi basierend aus dem Informationen vom Link und nicht basierend auf irgendwas was nicht Round() enthält. Man kann Round() auch in Format() reinbringen...
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: FormatFileSize

  Alt 28. Jul 2018, 10:36
Na da kann Dir geholfen werden, mitSetRoundMode() ist so ein Verhalten steuerbar.
Kannst du mal den Code zeigen, mit dem das funktioniert?

Ich würde das explizit ausprogrammieren:

Delphi-Quellcode:
  
  if <mit Punkt> then begin
    // sprachinvariant, immer mit Punkt
    fs := TFormatSettings.Invariant;
  end
  else begin
    // mit Komma oder was im Windows halt gerade eingestellt ist
    fs := FormatSettings;
  end;
  result := Format('%s %s', [FormatFloat('0.##', Floor(100*_size)/100, fs), s]);
Jo, ist natürlich besser als mein Pos/Copy Zeugs Ich kenne natürlich Floor, wusste aber nicht wie ich es dort in der Zeile einsetze. Das nehme ich jetzt. Danke
Aber wegen diesen FormatSettings…

Wenn ich immer:
Code:
fs := TFormatSettings.Create;
fs.DecimalSeparator := ','; // oder '.' oder '/' (wie ich halt will)
nehme, bin ich auf der sicheren Seite mit meinem Komma oder Punkt. Oder?

Michael
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:05 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