Registriert seit: 12. Jan 2009
49 Beiträge
Delphi XE2 Architect
|
[Korrektur] Byte-Werte zwischen den Einheiten umrechnen
4. Jan 2010, 14:10
Mein Vorschlag für Byte-Werte zwischen den Einheiten umrechnen:
Delphi-Quellcode:
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;
MfG ChEeTaH
|
|
Zitat
|