{ Преобразует трехзначное число в строку }
function ConvertToWord(N: word): string;
const
Sot : array[1..9] of string[13] =
('сто','двести','триста','четыреста','пятьсот',
'шестьсот','семьсот','восемьсот','девятьсот');
Des : array[2..9] of string[13] =
('двадцать','тридцать','сорок','пятьдесят',
'шестьдесят','семьдесят','восемьдесят','девяносто');
Edin : array[0..19] of string[13] =
('','один','два','три','четыре','пять','шесть','семь',
'восемь','девять','десять','одиннадцать','двенадцать',
'тринадцать','четырнадцать','пятнадцать',
'шестнадцать','семнадцать','восемнадцать','девятнадцать');
var
S: string;
begin
S:='';
N:=N mod 1000;
if N>99 then
begin
S:=Sot[N div 100]+' ';
N:=N mod 100;
end;
if N>19 then
begin
S:=S+Des[N div 10]+' ';
N:=N mod 10;
end;
Result:=S+Edin[N];
end;
{ Возвращает сумму прописью }
function CenaToStr(r: Currency): string;
var
N, k: longint;
S: string;
begin
N:=trunc(R); S:='';
if N<>0 then
begin
if N>999999 then
begin
k:=N div 1000000;
S:=ConvertToWord(k);
if ((k-(k div 100)*100)>10) and ((k-(k div 100)*100)<20) then
S:=S+' миллионов'
else
if (k mod 10)=1 then
S:=S+' миллион'
else
if ((k mod 10)>=2)and((k mod 10)<=4) then
S:=S+' миллиона'
else
S:=S+' миллионов';
N:=N mod 1000000;
end;
if N>999 then
begin
k:=N div 1000;
S:=S+' '+ConvertToWord(k);
if ((k-(k div 100)*100)>10)and((k-(k div 100)*100)<20) then
S:=S+' тысяч'
else
if (k mod 10)=1 then
begin
SetLength(S, Length(S)-2);
S:=S+'на тысяча';
end
else
if (k mod 10)=2 then
begin
SetLength(S, length(S)-1);
S:=S+'е тысячи';
end
else
if ((k mod 10)>=3)and((k mod 10)<=4) then
S:=S+' тысячи'
else
S:=S+' тысяч';
N:=N mod 1000;
end;
k:=N;
S:=S+' '+ConvertToWord(k);
if ((k-(k div 100)*100)>10)and((k-(k div 100)*100)<20) then
S:=S+' рублей'
else
if (k mod 10)=1 then
S:=S+' рубль'
else
if (k mod 10)=2 then
S:=S+' рубля'
else
if ((k mod 10)>=3)and((k mod 10)<=4) then
S:=S+' рубля'
else
S:=S+' рублей';
end;
if trunc(R)<>R then
begin
k:=round(frac(R)*100);
S:=S+' '+IntToStr(K);
if ((k-(k div 100)*100)>10)and((k-(k div 100)*100)<20) then
S:=S+' копеек'
else
if (k mod 10)=1 then
begin
S:=S+' копейка';
end
else
if (k mod 10)=2 then
begin
S:=S+' копейки';
end
else
if ((k mod 10)>=3)and((k mod 10)<=4) then
S:=S+' копейки'
else
S:=S+' копеек';
end
else
S:=S+' 00 копеек';
S:=Trim(S);
if S<>'' then
S[1]:=AnsiUpperCase(S[1])[1];
result:=S;
end;
|