function BaitAutoToKMGb(bait: int64; kol_wo_znak, edinitsa_izmereniya: byte): string;
var do_zpt: byte;
r: extended;
s: string;
begin
r:=bait;
s:='';
Case edinitsa_izmereniya of
1: s:='б';
2: s:='бит';
3: s:='Б';
4: s:='байт';
end;
If bait>=1E3 then
begin
r:=bait/1024;
Case edinitsa_izmereniya of
1: s:='Кб';
2: s:='Кбит';
3: s:='КБ';
4: s:='Кбайт';
end;
end;
If bait>=1E6 then
begin
r:=bait/1024/1024;
Case edinitsa_izmereniya of
1: s:='Мб';
2: s:='Мбит';
3: s:='МБ';
4: s:='Мбайт';
end;
end;
If bait>=1E9 then
begin
r:=bait/1024/1024/1024;
Case edinitsa_izmereniya of
1: s:='Гб';
2: s:='Гбит';
3: s:='ГБ';
4: s:='Гбайт';
end;
end;
do_zpt:=Length(IntToStr(Trunc(r)));
If do_zpt>=kol_wo_znak then
kol_wo_znak:=do_zpt+1;
Result:=Format('%*.*f', [do_zpt, kol_wo_znak-do_zpt-1, r]);
If s<>'' then
Result:=Result+' '+s;
end;
где
bait - исходное число;
kol_wo_znak - минимальное количество символов, выводимых в строке (запятая включается в количество знаков десятичного числа!);
edinitsa_izmereniya - формат единицы измерения, значения которых даны ниже:
0 - без единиц измерения,
1 - биты сокращенно (б, Кб, Мб, Гб),
2 - биты полностью (бит, Кбит, Мбит, Гбит),
3 - байты сокращенно (Б, КБ, МБ, ГБ),
4 - байты полностью (байт, Кбайт, Мбайт, Гбайт).
Например, BaitAutoToKMGb(58423695412, 5, 4) выведет '54,41 Гбайт'.
|