Показать сообщение отдельно
  #7  
Старый 14.06.2011, 16:38
Janom Janom вне форума
Начинающий
 
Регистрация: 04.02.2011
Адрес: Москва
Сообщения: 148
Версия Delphi: 7
Репутация: 133
По умолчанию

Параметры:
DEC:=десятичное число
ZeroCount:=Минимальная длинна числа (добовляет нули)
AddZero:=Добавлять нули (true/false)

Код:
function DecTo36(DEC: Cardinal; ZeroCount:Byte; AddZero:Boolean):String;
const
  Simbols: string[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var
  i:Cardinal;
  SimCount,SC:Cardinal;
  c36:String;
begin
SC:=0;
SimCount:=DEC;

while SimCount>=36 do
  begin
    if SC=0 then SimCount:=(DEC div 36)
    else SimCount:=SimCount div 36;
    SC:=SC+1;
  end;

if SC>0 then
  begin
    for i:=0 to SC do
      begin
        if i=0 then c36:=Simbols[SimCount+1];
        if (i<>0) and (i<>SC) then c36:=c36+Simbols[SimCount];
        if i=SC then c36:=c36+Simbols[(DEC mod 36)+1];
      end;
  end else c36:=Simbols[(DEC mod 36)+1];
if DEC=36 then c36:='10';

if AddZero then
  begin
    for i:=1 to ZeroCount-Length(c36) do
      c36:='0'+c36;
  end;
Result:=c36;
end;
Использовать так:
Код:
Edit1.Text:=DecTo36(2150,4,true);
Ответить с цитированием