Hallo, habe hier (Beitrag finde ich irgendwie nicht mehr) diese Funktion entdeckt.
Code:
function FormatFileSize(const AFileSize: Int64; Use1024: Boolean = True): String;
const
Sizes1024: array[0..8] of string = ('Bytes', 'KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB');
Sizes1000: array[0..8] of string = ('Bytes', 'KB','MB','GB','TB','PB','EB','ZB','YB');
var
_size: Extended;
_Unit: integer;
s: string;
Divisor: Integer;
begin
try
if (Use1024) then
Divisor := 1024
else
Divisor := 1000;
_size := AFileSize;
_Unit := Low(Sizes1024);
while (_size >= Divisor) and (_Unit < High(Sizes1024)) do
begin
_size := _size / Divisor;
Inc(_Unit);
end;
if (Use1024) then
s := Sizes1024[_Unit]
else
s := Sizes1000[_Unit];
Result := Format('%.2f %s', [_size, s]);
except
Result := 'ERR';
end;
end;
Die wollte ich gerne nutzen, habe aber auch irgendwo gelesen, dass man "Extended" gar nicht nehmen sollte, sondern "Int64". Ob das nun allg. gemeint war oder speziell... kein Plan. Wollte es nur mal erwähnen, da hier in der Funktion ja "Extended" genommen wird. Die Funktion geht jedenfalls aber wollte hier noch eine kleine Änderung vornehmen, nämlich das nach dem Komma keine Nullen angezeigt werden.
Beispiele:
1,59 = 1,59
1,50 = 1,5
1,02 = 1,02
1,00 = 1
Auch würde ich gerne das Komma durch ein anderes Zeichen ersetzen können (z.B. ein Punkt). Beides kann man natürlich außerhalb der Funktion im nachhinein noch machen aber das wäre wohl nicht die beste Lösung. Auch würde ich gerne mal wissen, wer Dateien hat, die so ab TerraByte anfangen. Alles war danach kommt, kann ich mir dann gar nicht mehr vorstellen... also als einzelne Datei
Vielleicht die NASA mit Daten in ner ZIP-Datei von 422 Exabyte? *lach
Michael