Array
(
)

Tratar informações de bytes

Redoctober
   - 27 set 2004

Aí pessoal...

Tenho que transformar um resultado de bytes em KB, MB e assim por diante. Eu achei um script em PHP que faz isso, gostaria da ajuda de você para eu colocar ele no Delphi.

#Código


$tamanho = ´65465464´;
$sigla = array("bytes","KB","MB","GB","TB","PB");
$indice_sigla = 0;
while ($parar == false)
{
if ($tamanho >= 1024)
{
$tamanho = $tamanho / 1024;
$indice_sigla++;
}
else
{
$parar = true;
}
}
$tamanho = (string) round($tamanho,2);
$tamanho = str_replace(".",",",$tamanho);
$tamanho = $tamanho." ".$sigla[$indice_sigla];


Abraço


Tatuweb
   - 27 set 2004

A função traduzida para o ObjectPascal

#Código

function SizeConvert (Tamanho: Real): string;
const
Sigla: array[0..5] of shortstring = (´Bytes´, ´KB´, ´MB´, ´GB´, ´TB´, ´PB´);
var
indice_sigla: Byte;
parar: Boolean;
begin
indice_sigla := 0;
parar := FALSE;

while (parar = false) do
begin
if (tamanho >= 1024) then
begin
tamanho := tamanho / 1024;
Inc (indice_sigla);
end else
parar := TRUE;
end;

Result := FormatFloat (´0.´, Round (tamanho));
Result := Result + ´ ´ + sigla[indice_sigla];
end;


Exemplo de como usar
#Código
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage (SizeConvert (15784210));
end;



Tatuweb
   - 27 set 2004

Correção: a função Round está redundante. Substitua:

Result := FormatFloat (´0.#´, Round (tamanho));
por
Result := FormatFloat (´0.´, tamanho);


Redoctober
   - 27 set 2004


Citação:
Correção: a função Round está redundante. Substitua:

Result := FormatFloat (´0.#´, Round (tamanho));
por
Result := FormatFloat (´0.´, tamanho);



Deu certo!

eu tenho uma variavel

#Código


var
down : String;


Com o valor 79878223, agora eu preciso converter essa variavel para Real para poder imprimir na função que você me passou. Como eu faço para converter String para Real?


Tatuweb
   - 27 set 2004


Citação:
eu tenho uma variavel

#Código

var
down : String;

Com o valor 79878223, agora eu preciso converter essa variavel para Real para poder imprimir na função que você me passou. Como eu faço para converter String para Real?
Para isso use a função StrToFloat. Ex:

ShowMessage (SizeConvert (StrToFloat (down)));