![]() |
[Korrektur] Byte-Werte zwischen den Einheiten umrechnen
Mein Vorschlag für
![]()
Delphi-Quellcode:
MfG ChEeTaH
function TfMain.FileSizeToStr(const ASize: Int64 {für Delphiversionen < 2005 durch Real/Double/Extended ersetzen}; const AUseShortNames: Boolean = true): string;
const ShortUnits: Array[0..8] of string = ('Byte', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); LongUnits: Array[0..8] of string = ('B', 'Kilob', 'Megab', 'Gigab', 'Terab', 'Petab', 'Exab', 'Zettab', 'Yottab'); Epsilon = 1 / 1024; // Wegen der Fließkommaungenauigkeit sicher nie falsch, verhindert außerdem Anzeigen wie "1024 KB" var Index: Integer; begin if ASize > 0 then // hinzugefügt begin Index := Trunc(ln(ASize) / ln(2) / 10 + Epsilon); if AUseShortNames then Result := Format('%.2f %s', [ASize / (Int64(1) shl (Index * 10)), ShortUnits[Index]]) else Result := Format('%.2f %s%s', [ASize / (Int64(1) shl (Index * 10)), LongUnits[Index], 'yte']) end else if AUseShortNames then // hinzugefügt Result := '0 ' + ShortUnits[0] else Result := '0 ' + LongUnits[0] + 'yte'; // hinzugefügt ende end; |
Re: [Korrektur] Byte-Werte zwischen den Einheiten umrechnen
selbes Thema ... wurde vor Kurzem schonmal durchgekaut:
Neuen Beitrag zur Code-Library hinzufügen -> ![]() (auch wenn es der Name nicht verrät ... PS: hätte man über ![]() die Berechnung dort ist auch nett: Object-Pascal / Delphi-Language -> ![]() noch was Sonstige Fragen zu Delphi -> ![]() und was Neues (wurde im anderem Thread mit erwähnt) Object-Pascal / Delphi-Language -> ![]() |
Re: [Korrektur] Byte-Werte zwischen den Einheiten umrechnen
oh sorry hab ich übersehen. Dafür hätte ich kein eigenes Thema eröffnen müssen, da es ja schon welche gibt :)
In keinem der Threads wird aber der Fall abgedeckt, bei dem die Inputgröße = 0 ist ;) Insofern also ein neuer Bug ;) MfG ChEeTaH |
Re: [Korrektur] Byte-Werte zwischen den Einheiten umrechnen
Zitat:
und keine Sorge ... übersehn tut jeder schnell mal was und so ganz offensichtlich war der Thread nun auch nicht |
Re: [Korrektur] Byte-Werte zwischen den Einheiten umrechnen
Zitat:
Delphi-Quellcode:
Index := Trunc(ln(ASize) / ln(2) / 10 + Epsilon);
Zitat:
MfG ChEeTaH |
Re: [Korrektur] Byte-Werte zwischen den Einheiten umrechnen
neee, in meinem eigenem Code hab ich doch diese Logarithmus-Funktionen nicht genutzt
und darum gibt es dort dieses Problem nicht :zwinker: |
Re: [Korrektur] Byte-Werte zwischen den Einheiten umrechnen
Zitat:
Er steht aber trotzdem in deinem Thread :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 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