Tratar informações de bytes

27/09/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.

$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&93;;


Abraço


Redoctober

Respostas

27/09/2004

Tatuweb

A função traduzida para o ObjectPascal

function SizeConvert (Tamanho: Real): string;
const
  Sigla: array[0..5&93; 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&91;indice_sigla&93;;
end;


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



Responder Citar

27/09/2004

Tatuweb

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

[b:14318b7922]Result := FormatFloat (´0.#´, Round (tamanho)); [/b:14318b7922]
por
[b:14318b7922]Result := FormatFloat (´0.´, tamanho); [/b:14318b7922]


Responder Citar

27/09/2004

Redoctober

Correção: a função Round está redundante. Substitua: [b:2a25f1cf48]Result := FormatFloat (´0.#´, Round (tamanho)); [/b:2a25f1cf48] por [b:2a25f1cf48]Result := FormatFloat (´0.´, tamanho); [/b:2a25f1cf48]



Deu certo!

eu tenho uma variavel

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?


Responder Citar

27/09/2004

Tatuweb

eu tenho uma variavel
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 ([color=#2222FF:5f2bda32a3]StrToFloat (down)[/color:5f2bda32a3]));


Responder Citar