Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Conocen algún componente o unidad para convertir medidas de bytes a KB, MB. GB, etc? (https://www.clubdelphi.com/foros/showthread.php?t=55249)

Black_Ocean 11-04-2008 07:12:14

¿Conocen algún componente o unidad para convertir medidas de bytes a KB, MB. GB, etc?
 
Hola amigos de ClubDelphi,

Espero no molestarlos nuevamente, pero, con esto de la programación, nuevos problemas se solucionan, y a la vez, nuevos problemas van surgiendo, y eso es lo entretenido :)

He estado buscando por la red de algún componente o unidad que pueda convertir unidades de bytes a KB, MB, GB, TB, etc (Que sea más exacto que el algoritmo que estaba diseñando, por ejemplo, el que más me gusta es el sistema de conversión que aparece en el diálogo de descarga de Internet Explorer cuando el archivo está en progreso, ya que es más preciso), pero no he logrado encontrar ningun componente que haga esta tarea.

¿Alguno de ustedes conoce de algún componente no visual o unidad que realice este requerimiento de forma precisa en la conversión?

De antemano, gracias y espero que me puedan ayudar ;)

Saludos

jachguate 11-04-2008 08:49:25

No me acuses de no preferir la POO, pero para algo como esto, no hace falta un componente...

Alguna vez hice algo como esto, que ahora se me ocurre:

Código Delphi [-]
function BytesToStr(const Bytes: Int64): string;
{
by: jachguate
    http://jachguate.wordpress.com
}
Const
  KB = 1024;
  MB = 1024 * KB;
  GB = 1024 * MB;
  TB = 1024.0 * GB;
var
  Valor: Double;
  Unidad: string;
  Decimales: Byte;

begin
  Decimales := 2;
  if Bytes < KB then
  begin
    Valor := Bytes;
    Unidad := 'Bytes';
    Decimales := 0;
  end
  else if Bytes < MB then
  begin
    Valor := Bytes / KB;
    Unidad := 'KB';
  end
  else if Bytes < GB then
  begin
    Valor := Bytes / MB;
    Unidad := 'MB';
  end
  else if Bytes < TB then
  begin
    Valor := Bytes / GB;
    Unidad := 'GB';
  end
  else
  begin
    Valor := Bytes / TB;
    Unidad := 'TB';
  end;
  Result := Format('%.*f %s', [Decimales, Valor, Unidad]);
end;

Hasta luego.

;)

Casimiro Notevi 11-04-2008 08:58:10

También puedes traducir esto :)

Código:

LPSTR HumanizeBytes(DWORD dwBytes)
{
    LPSTR szTemp = new CHAR[32];
    LPSTR szType[] = { "B","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb" };
    int i = 0;
    float fBytes = (float)dwBytes;
    while(fBytes >= 1024){ fBytes /= 1024; i++; }
    wsprintf(szTemp, "%d%s", (int)fBytes, szType[i]);
    return szTemp;
}


Lepe 11-04-2008 09:27:50

Chicos, chicos, Los trucos de clubDelphi están para algo :D :D

FormatFileSize
Tamaño Real de un archivo

Saludos

Black_Ocean 12-04-2008 08:56:33

Gracias a todos por sus recomendaciones como siempre :), las probaré.

Cordiales saludos desde Chile :)


La franja horaria es GMT +2. Ahora son las 12:49:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi