Transformar una medida informática en string

5021 vistas

A veces podemos necesitar transformar una medida informática (de fichero, carpeta,....) a una cadena.

Veamos una posible implementación que muestra su medida en la unidad más próxima:



delphi
  1. function SizeToStr(Sz: int64): string;
  2. resourcestring
  3.   strMinSize = '0 Bytes';
  4.   strKo = '%s Kb';
  5.   strMo = '%s Mb';
  6.   strGo = '%s Gb';
  7.   strOct = '%s Bytes';
  8. const
  9.   cstFloatFmt = '#.##';
  10.   cstOneKo = 1024;
  11.   cstOneMo = cstOneKo * 1024;
  12.   cstOneGo = cstOneMo * 1024;
  13. begin
  14.   Result := strMinSize;
  15.   if (Sz = 0) then
  16.     Exit;
  17.   if (Sz <= cstOneKo) then
  18.   begin
  19.     Result := Format(strOct, [FormatFloat(cstFloatFmt, Sz)]);
  20.     Exit;
  21.   end;
  22.   if (Sz <= cstOneMo) then
  23.   begin
  24.     Result := Format(strKo, [FormatFloat(cstFloatFmt, Sz / cstOneKo)]);
  25.     Exit;
  26.   end;
  27.   if (Sz <= cstOneGo) then
  28.   begin
  29.     Result := Format(strMo, [FormatFloat(cstFloatFmt, Sz / (cstOneMo))]);
  30.     Exit;
  31.   end;
  32.   Result := Format(strGo, [FormatFloat(cstFloatFmt, Sz / (cstOneGo))]);
  33. end;
  34.