Das ist ganz einfach (denke ich).
Gibt es eine systemeigene Funktion oder eine Funktion, die jemand erstellt hat, die von Delphi aus aufgerufen werden kann und die eine Anzahl von Bytes (z. B. eine Dateigröße) anzeigt, so wie es Windows im Feld Eigenschaften einer Datei anzeigt?
So zeigt z. B. das Windows-Eigenschaftsfeld verschiedene Größen an:
539 bytes (539 bytes)
35.1 KB (35,974 bytes)
317 MB (332,531,365 bytes)
2.07 GB (2,224,617,077 bytes)
Die Anzeige ist intelligent bei der Verwendung von Bytes, KB, MB oder GB und zeigt nur 3 signifikante Ziffern für KB, MB und GB an. Anschließend wird die genaue Anzahl der Bytes in Klammern angezeigt, wobei die Tausender durch Kommas getrennt werden. Es ist eine sehr schöne, gut durchdachte Anzeige.
Kennt jemand eine solche Funktion?
Edit: Ich bin sehr überrascht, dass es dafür keine Funktion gibt.
Vielen Dank für Ihre hilfreichen Ideen. Ich habe mir das hier ausgedacht, das zu funktionieren scheint:
function BytesToDisplay(A:int64): string;
var
A1, A2, A3: double;
begin
A1 := A / 1024;
A2 := A1 / 1024;
A3 := A2 / 1024;
if A1 < 1 then Result := floattostrf(A, ffNumber, 15, 0) + ' bytes'
else if A1 < 10 then Result := floattostrf(A1, ffNumber, 15, 2) + ' KB'
else if A1 < 100 then Result := floattostrf(A1, ffNumber, 15, 1) + ' KB'
else if A2 < 1 then Result := floattostrf(A1, ffNumber, 15, 0) + ' KB'
else if A2 < 10 then Result := floattostrf(A2, ffNumber, 15, 2) + ' MB'
else if A2 < 100 then Result := floattostrf(A2, ffNumber, 15, 1) + ' MB'
else if A3 < 1 then Result := floattostrf(A2, ffNumber, 15, 0) + ' MB'
else if A3 < 10 then Result := floattostrf(A3, ffNumber, 15, 2) + ' GB'
else if A3 < 100 then Result := floattostrf(A3, ffNumber, 15, 1) + ' GB'
else Result := floattostrf(A3, ffNumber, 15, 0) + ' GB';
Result := Result + ' (' + floattostrf(A, ffNumber, 15, 0) + ' bytes)';
end;
Das ist wahrscheinlich gut genug, aber gibt es etwas Besseres?