Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Сумма прописью - Способ 2


{ Преобразует трехзначное число в строку }
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;

Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.