Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#26

AW: Speichergrößen heutzutage korrekt interpretieren/betiteln

  Alt 24. Jul 2018, 09:30
Ich gehe mal stark davon aus, dass 99% aller Delphi-schreiber die Funktion unten benutzen, um Datengrößen visuell dazustellen.

Zitat:
Khabarakh hat auf Basis seines Codes eine Alternative gepostet, die ohne die Unit Math auskommen sollte:
zusammenfalten · markieren Delphi-Quellcode:
Delphi-Quellcode:
function 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
  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;
Wie sähe das denn in der Kibi-Schreibweise aus? Muss nur Epsilon auf 1000 geändert werden?
  Mit Zitat antworten Zitat