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
Seite 3 von 3     123   
Benutzerbild von Uwe Raabe
Uwe Raabe

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

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.685 Beiträge
 
Delphi 11 Alexandria
 
#22

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
 
#23

AW: FormatFileSize

  Alt 28. Jul 2018, 11:55
Also SetRoundMode behalte ich mal im Hinterkopf. Danke für die Info.
Find jetzt die Zeile "result := Format('%s %s', [FormatFloat('0.##', Floor(100*_size)/100, fs), s]);" passt ganz gut.

KodeZwerg und Uwe Raabe... ich hoffe ihr streitet nicht rum

Aber Windows macht wirklich sein eigenes Ding. Abgesehen von der Bezeichnung der Dateigrößen...

308736 Bytes / 1024 = 301,5 (Windows gibt 301 aus) <- Datei System32\wusa.exe
14848 Bytes / 1024 = 14,5 (Windows gibt 14,5 aus) <- Datei System32\wshirda.dll

Mal mit ",5" mal ohne. (im Explorer Ansicht Modus "Liste" oder bei den Datei-Eigenschaften)
Im Modus "Details" (dort ist alles ohne Nachkommastellen) die wusa.exe mit 302 wobei in der Statusleiste dann gleichzeitig 301 steht

Ich gebe jetzt z.B. bei der wusa.exe 301,5 KiB aus.

Schon komisch

Michael

Geändert von MicMic (28. Jul 2018 um 11:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: FormatFileSize

  Alt 28. Jul 2018, 12:47
KodeZwerg und Uwe Raabe... ich hoffe ihr streitet nicht rum
Würde uns doch nicht im Traum einfallen
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.685 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: FormatFileSize

  Alt 28. Jul 2018, 19:11
KodeZwerg und Uwe Raabe... ich hoffe ihr streitet nicht rum
Würde uns doch nicht im Traum einfallen
Seh ich genauso, da Uwe der weit aus Erfahrene Delphi Pro User ist war ich mir Anfangs auch nicht sicher das zu Schreiben. Falls es grob Klang lag es schlicht daran das ich ausser Haus musste und Round() über Format() nicht testen konnte, aber es erscheint mir logisch das ein "SetRoundMode()" kein "SetFormatIrgendWas()" replacement ist. Vielleicht ist es falsch was ich so von mir gebe. Jedenfalls tuts mir leid wenn es falsch rüberkam.

Hab Euch alle lieb.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#26

AW: FormatFileSize

  Alt 28. Jul 2018, 22:35
Windows 10 zeigt im Explorer als Größe den Wert 302 KB und bei den Eigenschaften 301 KB (308 736 Bytes) an.

Konsistent ist da also anders.

Im Explorer erfolgt die Berechnung mit dem Kaufmännischen Runden und in den Eigenschaften evtl. mit dem Symetrischen Runden.
  Mit Zitat antworten Zitat
MicMic

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

AW: FormatFileSize

  Alt 29. Jul 2018, 07:50
Windows 10 zeigt im Explorer als Größe den Wert 302 KB und bei den Eigenschaften 301 KB (308 736 Bytes) an.

Konsistent ist da also anders.

Im Explorer erfolgt die Berechnung mit dem Kaufmännischen Runden und in den Eigenschaften evtl. mit dem Symetrischen Runden.
Also bei mir rundet Windows ja nach Lust und Laune.
Ich schrieb ja oben wusa.exe und wshirda.dll (mal mit ,5 mal ohne) im selben Ansichtmodus.

(Fette Schrift = Ansicht von Windows in den Eigenschaften)

wshirda.dll: Größe = 14848 / 1024 = 14,5 (14,5) Diff. 0
wusa.exe: Größe = 308736 / 1024 = 301,5 (301) Diff. 0,5

Also Windows10 rundet (bei der gleichen Ansicht) bei der wshirda.dll nicht, bei der wusa.exe aber schon. Total Sinnfrei. Aber ich mache mir jetzt da kein Kopf mehr mit diesem Programm aus der Garage (*lach). Ich gebe bei beiden Dateien ",5" mit aus.

Michael
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#28

AW: FormatFileSize

  Alt 29. Jul 2018, 10:58
Also Windows10 rundet (bei der gleichen Ansicht) ....
Schonmal was von Bankers Rounding gehört? Nee, da hätte die letzte Zahl gerade sein müssen, also auch 302.

Und hier rundet er eben nicht auf x Nachkommastellen, sondern auf 3 "sichtbare" Dezimalstellen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Jul 2018 um 11:03 Uhr)
  Mit Zitat antworten Zitat
MicMic

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

AW: FormatFileSize

  Alt 29. Jul 2018, 12:44
Also Windows10 rundet (bei der gleichen Ansicht) ....
Schonmal was von Bankers Rounding gehört? Nee, da hätte die letzte Zahl gerade sein müssen, also auch 302.

Und hier rundet er eben nicht auf x Nachkommastellen, sondern auf 3 "sichtbare" Dezimalstellen.
Ja, 3 Zahlen... das fällt jetzt auf wenn man darauf schaut. Windows zeigt dann auch "1,00 MB" an.
Nur bei den Bytes sind es mal weniger als 3 Zahlen. Naja, 92 Bytes als 92,0 Bytes anzuzeigen wäre dann etwas peinlich
Aber vielleicht finde ich ja noch eine 3,25 Bytes Datei *lach

Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 22:32 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