It is simple (I think).
Is there a built-in function or a function that someone created that can be called from Delphi that displays several bytes (for example, file size), how does Windows display in the file properties window?
eg. This is what the Windows properties window looks like:
539 bytes (539 bytes) 35.1 KB (35,974 bytes) 317 MB (332,531,365 bytes) 2.07 GB (2,224,617,077 bytes)
The display has the ability to use bytes, KB, MB or GB and shows only 3 significant digits for KB, MB and GB. It then follows that by displaying the exact number of bytes in brackets with commas separating thousands. This is a very nice display, well thought out.
Does anyone know about such a feature?
Edit: I am very surprised that there was no function for this.
Thanks for your helpful ideas. I came up with this that seems to work:
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;
This is probably good enough, but is there anything better?