![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Числа пропистью [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