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

Автор: LexusR
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> преобразование даты типа TDateTime в дату прописью

преобразование даты типа TDateTime в дату прописью
типа : "четырнадцатое ноября две тысячи третьего года"

Зависимости: Windows,SysUtils
Автор:       LexusR, ICQ:41627622, Novosibirsk
Copyright:   LexusR
Дата:        12 декабря 2003 г.
***************************************************** }

const
  MonthNames: array[1..12] of string = ('января', 'февраля', 'марта', 'апреля',
    'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября',
      'декабря');
  NamesOfThousand0: array[1..2] of string = ('тысячного', 'двухтысячного');
  NamesOfThousand: array[1..2] of string = ('одна тысяча', 'две тысячи');
  NamesOfHandreds0: array[1..9] of string = ('сотого', 'двухсотого',
    'трехсотого',
    'четырехсотого', 'пятисотого', 'шестисотого', 'семисотого',
    'восьмисотого', 'девятисотого');
  NamesOfHandreds: array[1..9] of string('сто', 'двести', 'триста', 'четыреста',
    'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот');
  NamesOfTens00: array[1..3] of string('десятое', 'двадцатое', 'тридцатое');
  NamesOfTens0: array[1..9] of string('десятого', 'двадцатого',
    'тридцатого', 'сорокового', 'пятидесятого', 'шестидесятого',
    'семидесятого', 'восьмидесятого', 'девяностого');
  NamesOfTens: array[2..9] of string = ('двадцать', 'тридцать', 'сорок',
    'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто');
  NamesOfFistTen0: array[1..9] of string = ('одинадцатое', 'двенадцатое',
    'тринадцатое', 'четырнадцатое', 'пятнадцатое', 'шестнадцатое',
      'семнадцатое',
    'восемьнадцатое', 'девятнадцатое');
  NamesOfFistTen: array[1..9] of string = ('одинадцатого', 'двенадцатого',
    'тринадцатого', 'четырнадцатого', 'пятнадцатого', 'шестнадцатого',
    'семнадцатого', 'восемьнадцатого', 'девятнадцатого');
  NamesOfUnits0: array[1..9] of string = ('первое', 'второе', 'третье',
    'четвертое', 'пятое', 'шестое', 'седьмое', 'восьмое', 'девятое');
  NamesOfUnits: array[1..9] of string = ('первого', 'второго', 'третьего',
    'четвертого', 'пятого', 'шестого', 'седьмого', 'восьмого', 'девятого');

function ConvertDateToString(Date: TDateTime): string;
var
  year, month, day: word;
  th, hn, tn, un: word;
begin
  DecodeDate(Date, year, month, day);
  // разбираем число
  tn := day div 10;
  un := day mod 10;
  if un = 0 then
    result := NamesOfTens00[tn]
  else if tn = 0 then
    result := NamesOfUnits0[un]
  else if tn = 1 then
    result := NamesOfFistTen0[un]
  else
    result := NamesOfTens[tn] + ' ' + NamesOfUnits0[un];
  // разбираем месяц
  result := result + ' ' + MonthNames[month];
  // разбираем год
  th := year div 1000;
  hn := year mod 1000 div 100;
  tn := year mod 1000 mod 100 div 10;
  un := year mod 1000 mod 100 mod 10;
  if ((hn = 0) and (tn = 0) and (un = 0)) then
  begin
    result := result + ' ' + NamesOfThousand0[th] + ' года';
    exit;
  end
  else
    result := result + ' ' + NamesOfThousand[th];
  if hn > 0 then
  begin
    if ((tn = 0) and (un = 0)) then
    begin
      result := result + ' ' + NamesOfHandreds0[hn] + ' года';
      exit;
    end
    else
      result := result + ' ' + NamesOfHandreds[hn];
  end;
  if un = 0 then
    result := result + ' ' + NamesOfTens0[tn]
  else if tn = 0 then
    result := result + ' ' + NamesOfUnits[un]
  else if tn = 1 then
    result := result + ' ' + NamesOfFistTen[un]
  else
    result := result + ' ' + NamesOfTens[tn] + ' ' + NamesOfUnits[un];
  result := result + ' года'
end;
Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay