Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Числа пропистью [D7, WinXP]


_ozzy_ ©   (2007-01-19 14:18:00) 

Поделитесь, кто знает, как перевести числа в слова (числа прописью).


Amoeba   (2007-01-22 17:42:00) [1]

Выбирай на вкус:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1028
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=805
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1105
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=17
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1106


Piroxyline   (2007-01-20 12:18:00) [2]

А в FAQ заглянуть не судьба?
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988619349&n=19


NiGGa   (2007-01-19 14:55:00) [3]

Мы что-то такое используем

res := Sum2TxtFunction(120.566, 'рубасов', 'капеек', true);
res = 'Сто двадцять  рубасов 56 капеек';
res := Sum2TxtFunction(120.566, 'рубасов', 'капеек', false);
res = 'Сто двадцять  рубасов';

function Sum2TxtFunction(lSumDbl: extended; lCurrStr, lFractStr: string; lFractBln: boolean): string;
 function CSpace(C: Char; Count: Integer): String;
 var
   i: Integer;
 begin
   for i := 0 to Count - 1 do
     Result := Result + C;
 end;
var
 tmpDecSep: Char;
 lsResult: String;

 tis, mln, mlrd, dig, dig_a: array[0..19] of string;
 ten, hun: array[0..9] of string;

 CurrValue: Integer;
 Fraction: String;
 TmStr: String;
 s, i: integer;
 DIGIT, RADIX: String;
begin
 // тысячи
 tis[0] := 'тисяч ';
 tis[1] := 'тисяча ';
 tis[2] := 'тисячi ';
 tis[3] := 'тисячi ';
 tis[4] := 'тисячi ';
 tis[5] := 'тисяч ';
 tis[6] := 'тисяч ';
 tis[7] := 'тисяч ';
 tis[8] := 'тисяч ';
 tis[9] := 'тисяч ';
 tis[10] := 'тисяч ';
 tis[11] := 'тисяч ';
 tis[12] := 'тисяч ';
 tis[13] := 'тисяч ';
 tis[14] := 'тисяч ';
 tis[15] := 'тисяч ';
 tis[16] := 'тисяч ';
 tis[17] := 'тисяч ';
 tis[18] := 'тисяч ';
 tis[19] := 'тисяч ';
 // мiльйон
 mln[0] := 'мiльйонiв ';
 mln[1] := 'мiльйон ';
 mln[2] := 'мiльйона ';
 mln[3] := 'мiльйона ';
 mln[4] := 'мiльйона ';
 mln[5] := 'мiльйонiв ';
 mln[6] := 'мiльйонiв ';
 mln[7] := 'мiльйонiв ';
 mln[8] := 'мiльйонiв ';
 mln[9] := 'мiльйонiв ';
 mln[10] := 'мiльйонiв ';
 mln[11] := 'мiльйонiв ';
 mln[12] := 'мiльйонiв ';
 mln[13] := 'мiльйонiв ';
 mln[14] := 'мiльйонiв ';
 mln[15] := 'мiльйонiв ';
 mln[16] := 'мiльйонiв ';
 mln[17] := 'мiльйонiв ';
 mln[18] := 'мiльйонiв ';
 mln[19] := 'мiльйонiв ';
 // мiльярдiв
 mlrd[0] := ' ';
 mlrd[1] := 'мiльярд ';
 mlrd[2] := 'мiльярда ';
 mlrd[3] := 'мiльярда ';
 mlrd[4] := 'мiльярда ';
 mlrd[5] := 'мiльярдiв ';
 mlrd[6] := 'мiльярдiв ';
 mlrd[7] := 'мiльярдiв ';
 mlrd[8] := 'мiльярдiв ';
 mlrd[9] := 'мiльярдiв ';
 mlrd[10] := 'мiльярдiв ';
 mlrd[11] := 'мiльярдiв ';
 mlrd[12] := 'мiльярдiв ';
 mlrd[13] := 'мiльярдiв ';
 mlrd[14] := 'мiльярдiв ';
 mlrd[15] := 'мiльярдiв ';
 mlrd[16] := 'мiльярдiв ';
 mlrd[17] := 'мiльярдiв ';
 mlrd[18] := 'мiльярдiв ';
 mlrd[19] := 'мiльярдiв ';
 // цифры
 dig[0] := '';
 dig[1] := 'один ';
 dig[2] := 'два ';
 dig[3] := 'три ';
 dig[4] := 'чотири ';
 dig[5] := 'п''ять ';
 dig[6] := 'шiсть ';
 dig[7] := 'сiм ';
 dig[8] := 'вiсiм ';
 dig[9] := 'дев''ять ';
 dig[10] := 'десять ';
 dig[11] := 'одиннадцять ';
 dig[12] := 'дванадцять ';
 dig[13] := 'тринадцять ';
 dig[14] := 'чотирнадцять ';
 dig[15] := 'п''ятнадцять ';
 dig[16] := 'шiстьнадцять ';
 dig[17] := 'сiмнадцять ';
 dig[18] := 'вiсiмнадцять ';
 dig[19] := 'дев''ятнадцять ';
 // цифры
 dig_a[0] := '';
 dig_a[1] := 'одна ';
 dig_a[2] := 'двi ';
 dig_a[3] := 'три ';
 dig_a[4] := 'чотири ';
 dig_a[5] := 'п''ять ';
 dig_a[6] := 'шiсть ';
 dig_a[7] := 'сiм ';
 dig_a[8] := 'вiсiм ';
 dig_a[9] := 'дев''ять ';
 dig_a[10] := 'десять ';
 dig_a[11] := 'одиннадцять ';
 dig_a[12] := 'дванадцять ';
 dig_a[13] := 'тринадцять ';
 dig_a[14] := 'чотирнадцять ';
 dig_a[15] := 'п''ятнадцять ';
 dig_a[16] := 'шiстьнадцять ';
 dig_a[17] := 'сiмнадцять ';
 dig_a[18] := 'вiсiмнадцять ';
 dig_a[19] := 'дев''ятнадцять ';
 // десятки
 ten[0] := '';
 ten[1] := '';
 ten[2] := 'двадцять ';
 ten[3] := 'тридцять ';
 ten[4] := 'сорок ';
 ten[5] := 'п''ятдесят ';
 ten[6] := 'шiстдесят ';
 ten[7] := 'сiмдесят ';
 ten[8] := 'вiсiмдесят ';
 ten[9] := 'дев''яносто ';
 // сотни
 hun[0] := '';
 hun[1] := 'сто ';
 hun[2] := 'двiстi ';
 hun[3] := 'триста ';
 hun[4] := 'чотириста ';
 hun[5] := 'п''ятьсот ';
 hun[6] := 'шiстьсот ';
 hun[7] := 'сiмсот ';
 hun[8] := 'вiсiмсот ';
 hun[9] := 'дев''ятьсот ';

 Fraction := '';
 i := 0;
 lSumDbl := ABS(lSumDbl);
 // отделить дробную часть
 CurrValue := trunc(lSumDbl);
 tmpDecSep := DecimalSeparator;
 DecimalSeparator := '.';
 try
   TmStr := FloatToStr(lSumDbl);
 finally
   DecimalSeparator := tmpDecSep;
 end;
 if (Pos('.', TmStr) > 0) then
   Fraction := Copy(TmStr, Pos('.', TmStr) + 1, 2);
 Fraction := Fraction + CSpace('0', 2 - Length(Fraction));
 lsResult := '';
 if Currvalue = 0 then
   lsResult := 'Нуль '
 else
   while CurrValue > 0 do
     begin
     if (CurrValue mod 1000) <> 0 then
       begin
       s := CurrValue mod 100;
       if S < 20 then
         begin
         if i <= 1 then
           DIGIT := dig_a[s]
         else
           DIGIT := dig[s];
         case i of
           0: RADIX := '';
           1: RADIX := tis[s];
           2: RADIX := mln[s];
           3: RADIX := mlrd[s];
         end;
         lsResult := DIGIT + RADIX + lsResult;
       end
       else
         begin
         if i <= 1 then
           DIGIT := dig_a[s mod 10]
         else
           DIGIT := dig[s mod 10];
         case i of
           0: RADIX := '';
           1: RADIX := tis[s mod 10];
           2: RADIX := mln[s mod 10];
           3: RADIX := mlrd[s mod 10];
         end;
         lsResult := ten[trunc(s/10)] + DIGIT + RADIX + lsResult;
       end;
       CurrValue := trunc(CurrValue/100);
       s := CurrValue mod 10;
       lsResult := hun[s] + lsResult;
       CurrValue := trunc(CurrValue/10);
       i := i + 1;
     end
     else
       begin
       CurrValue := trunc(CurrValue/1000);
       i := i + 1;
     end;
   end;
 lsResult := lsResult + ' ' + lCurrStr;
 if lFractBln then
   lsResult := lsResult + ' ' + Fraction + ' ' + lFractStr;

 lsResult := AnsiUpperCase(Copy(lsResult, 1, 1)) + Copy(lsResult, 2, 254);
 Trim(lsResult);

 Result := lsResult;
end;


Array   (2007-01-19 14:43:00) [4]

http://narod.yandex.ru/cgi-bin/yandsearch?user=delphiworld&text=%F1%F3%EC%EC%E0+%EF%F0%EE%EF%E8%F1%FC%FE&where=2


Сергей М.   (2007-01-19 14:32:00) [5]

Гугль подаст.

http://www.google.ru/search?q=Delphi+%D1%87%D0%B8%D1%81%D0%BB%D0%BE+%D0%BF%D1%80%D0%BE%D0%BF%D0%B8%D1%81%D1%8C%D1%8E&ie=utf-8&oe=utf-8&rls=org.mozilla:ru:official&client=firefox-a


Наверх

Титульная страница Поиск, карта сайта Написать письмо