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


{------------------------ Деньги прописью ---------------------}

function TextSum(S: double): string;

  function Conv999(M: longint; fm: integer): string;
  const

    c1to9m: array[1..9] of string[6] =
    ('один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь',
      'девять');
    c1to9f: array[1..9] of string[6] =
    ('одна', 'две', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь',
      'девять');
    c11to19: array[1..9] of string[12] =
    ('одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать',
      'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать');
    c10to90: array[1..9] of string[11] =
    ('десять', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят',
      'семьдесят', 'восемьдесят', 'девяносто');
    c100to900: array[1..9] of string[9] =
    ('сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот',
      'восемьсот', 'девятьсот');
  var

    s: string;
    i: longint;
  begin

    s := '';
    i := M div 100;
    if i <> 0 then
      s := c100to900[i] + ' ';
    M := M mod 100;
    i := M div 10;
    if (M > 10) and (M < 20) then
      s := s + c11to19[M - 10] + ' '
    else
    begin
      if i <> 0 then
        s := s + c10to90[i] + ' ';
      M := M mod 10;
      if M <> 0 then
        if fm = 0 then
          s := s + c1to9f[M] + ' '
        else
          s := s + c1to9m[M] + ' ';
    end;
    Conv999 := s;
  end;

  {--------------------------------------------------------------}
var

  i: longint;
  j: longint;
  r: real;
  t: string;

begin

  t := '';

  j := Trunc(S / 1000000000.0);
  r := j;
  r := S - r * 1000000000.0;
  i := Trunc(r);
  if j <> 0 then
  begin
    t := t + Conv999(j, 1) + 'миллиард';
    j := j mod 100;
    if (j > 10) and (j < 20) then
      t := t + 'ов '
    else
      case j mod 10 of
        0: t := t + 'ов ';
        1: t := t + ' ';
        2..4: t := t + 'а ';
        5..9: t := t + 'ов ';
      end;
  end;

  j := i div 1000000;
  if j <> 0 then
  begin
    t := t + Conv999(j, 1) + 'миллион';
    j := j mod 100;
    if (j > 10) and (j < 20) then
      t := t + 'ов '
    else
      case j mod 10 of
        0: t := t + 'ов ';
        1: t := t + ' ';
        2..4: t := t + 'а ';
        5..9: t := t + 'ов ';
      end;
  end;

  i := i mod 1000000;
  j := i div 1000;
  if j <> 0 then
  begin
    t := t + Conv999(j, 0) + 'тысяч';
    j := j mod 100;
    if (j > 10) and (j < 20) then
      t := t + ' '
    else
      case j mod 10 of
        0: t := t + ' ';
        1: t := t + 'а ';
        2..4: t := t + 'и ';
        5..9: t := t + ' ';
      end;
  end;

  i := i mod 1000;
  j := i;
  if j <> 0 then
    t := t + Conv999(j, 1);
  t := t + 'руб. ';

  i := Round(Frac(S) * 100.0);
  t := t + Long2Str(i) + ' коп.';
  TextSum := t;
end;

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования