Code: |
{ Преобразует трехзначное число в строку } function ConvertToWord(N: word): string; const Sot : array[1..9] ofstring[13] = ('сто','двести','триста','четыреста','пятьсот', 'шестьсот','семьсот','восемьсот','девятьсот');
Des : array[2..9] ofstring[13] = ('двадцать','тридцать','сорок','пятьдесят', 'шестьдесят','семьдесят','восемьдесят','девяносто');
Edin : array[0..19] ofstring[13] = ('','один','два','три','четыре','пять','шесть','семь', 'восемь','девять','десять','одиннадцать','двенадцать', 'тринадцать','четырнадцать','пятнадцать', 'шестнадцать','семнадцать','восемнадцать','девятнадцать');
var S: string; begin S:=''; N:=N mod1000; if N>99then begin S:=Sot[N div100]+' '; N:=N mod100; end; if N>19then begin S:=S+Des[N div10]+' '; N:=N mod10; end; Result:=S+Edin[N]; end;
{ Возвращает сумму прописью } function CenaToStr(r: Currency): string; var N, k: longint; S: string; begin N:=trunc(R); S:=''; if N<>0then begin if N>999999then begin k:=N div1000000; S:=ConvertToWord(k); if ((k-(k div100)*100)>10) and ((k-(k div100)*100)<20) then S:=S+' миллионов' else if (k mod10)=1then S:=S+' миллион' else if ((k mod10)>=2)and((k mod10)<=4) then S:=S+' миллиона' else S:=S+' миллионов'; N:=N mod1000000; end; if N>999then begin k:=N div1000; S:=S+' '+ConvertToWord(k); if ((k-(k div100)*100)>10)and((k-(k div100)*100)<20) then S:=S+' тысяч' else if (k mod10)=1then begin SetLength(S, Length(S)-2); S:=S+'на тысяча'; end else if (k mod10)=2then begin SetLength(S, length(S)-1); S:=S+'е тысячи'; end else if ((k mod10)>=3)and((k mod10)<=4) then S:=S+' тысячи' else S:=S+' тысяч'; N:=N mod1000; end; k:=N; S:=S+' '+ConvertToWord(k); if ((k-(k div100)*100)>10)and((k-(k div100)*100)<20) then S:=S+' рублей' else if (k mod10)=1then S:=S+' рубль' else if (k mod10)=2then S:=S+' рубля' else if ((k mod10)>=3)and((k mod10)<=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 div100)*100)>10)and((k-(k div100)*100)<20) then S:=S+' копеек' else if (k mod10)=1then begin S:=S+' копейка'; end else if (k mod10)=2then begin S:=S+' копейки'; end else if ((k mod10)>=3)and((k mod10)<=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;
|
https://delphiworld.narod
DelphiWorld 6.0
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!