Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

Цифры в слова   Найти похожие ветки 

 
Merry   (2004-03-03 20:30) [0]

Подскажите, пожалуйста. Если ли в Delphi
готовая функция перевода из цифр в слова,
т.е. 5000 руб. в "пять тысяx рублей"?


 
Vlad ©   (2004-03-03 20:34) [1]


> Merry   (03.03.04 20:30)  


> Если ли в Delphi
> готовая функция перевода из цифр в слова,
> т.е. 5000 руб. в "пять тысяx рублей"?

Нету.


 
Алхимик ©   (2004-03-03 20:56) [2]

Из местной кладовки.
http://www.delphimaster.ru/cgi-bin/download.pl?get=1069401646&n=0


 
Cyborg!   (2004-03-04 08:45) [3]

2Merry - такой готовой функции нет и быть не может!
Не ленитесь написать этот несложный алгоритм сами!


 
Кщд   (2004-03-04 09:09) [4]

Cyborg!   (04.03.04 08:45) [3]
зачем изобретать велосипед, тем паче, что это самокат?
какая в этом познавательная ценность?


 
Palladin ©   (2004-03-04 09:22) [5]


> Кщд   (04.03.04 09:09) [4]

А затем, можно воспользоватся и уже написанным, но не ужели самому не интересно реализовать? Сколько можно опыта при этом получить.


 
Семен Сорокин ©   (2004-03-04 09:49) [6]

Palladin ©   (04.03.04 09:22) [5]
:))
Схватил много экспы и получил Level-up
(С) Две сорванные башни


 
Кщд   (2004-03-04 10:09) [7]

Palladin ©   (04.03.04 09:22) [5]
без претензии на объективность: интересно реализовать, например, какую-нибудь хитрющую сортировку, а писать "парсер" чисел - скучновато...


 
Санек-Ш   (2004-03-04 12:29) [8]

Вот на VB, даже на VBA... В pascal переделать очень просто, даже новичку в Дельфях... теже массивы и строковые операторы... Короче кому надо сделает

Public Function TransInteger(Chislo As String) As String
Dim ChisloStr(4, 20) As String

ChisloStr(1, 0) = ""
ChisloStr(1, 1) = "один"
ChisloStr(1, 2) = "два"
ChisloStr(1, 3) = "три"
ChisloStr(1, 4) = "четыре"
ChisloStr(1, 5) = "пять"
ChisloStr(1, 6) = "шесть"
ChisloStr(1, 7) = "семь"
ChisloStr(1, 8) = "восемь"
ChisloStr(1, 9) = "девять"

ChisloStr(1, 10) = "десять"
ChisloStr(1, 11) = "одинадцать"
ChisloStr(1, 12) = "двенадцать"
ChisloStr(1, 13) = "тринадцать"
ChisloStr(1, 14) = "четырнадцать"
ChisloStr(1, 15) = "пятнадцать"
ChisloStr(1, 16) = "шестнадцать"
ChisloStr(1, 17) = "семнадцать"
ChisloStr(1, 18) = "восемнадцать"
ChisloStr(1, 19) = "девятнадцать"

ChisloStr(2, 1) = "десять"
ChisloStr(2, 2) = "двадцать"
ChisloStr(2, 3) = "тридцать"
ChisloStr(2, 4) = "сорок"
ChisloStr(2, 5) = "пятьдесят"
ChisloStr(2, 6) = "шестьдесят"
ChisloStr(2, 7) = "семьдесят"
ChisloStr(2, 8) = "восемьдесят"
ChisloStr(2, 9) = "девяносто"

ChisloStr(3, 1) = "сто"
ChisloStr(3, 2) = "двести"
ChisloStr(3, 3) = "триста"
ChisloStr(3, 4) = "четыреста"
ChisloStr(3, 5) = "пятьсот"
ChisloStr(3, 6) = "шестьсот"
ChisloStr(3, 7) = "семьсот"
ChisloStr(3, 8) = "восемьсот"
ChisloStr(3, 9) = "девятьсот"

ChisloStr(4, 1) = "одна тысяча"
ChisloStr(4, 2) = "две тысячи"
ChisloStr(4, 3) = "три тысячи"
ChisloStr(4, 4) = "четыре тысячи"
ChisloStr(4, 5) = "пять тысяч"
ChisloStr(4, 6) = "шесть тысяч"
ChisloStr(4, 7) = "семь тысяч"
ChisloStr(4, 8) = "восемь тысяч"
ChisloStr(4, 9) = "девять тысяч"
ChisloStr(4, 10) = "десять тысяч"
ChisloStr(4, 11) = "одинадцать тысяч"
ChisloStr(4, 12) = "двенадцать тысяч"
ChisloStr(4, 13) = "тринадцать тысяч"
ChisloStr(4, 14) = "четырнадцать тысяч"
ChisloStr(4, 15) = "пятнадцать тысяч"
If Int(Chislo) < 16000 Then
If Len(Chislo) > 2 Then
If Int(Right((Chislo), 2)) > 0 And Int(Right((Chislo), 2)) < 20 Then
ед = ""
дес = ChisloStr(1, Int(Right(Chislo, 2)))
Else
ед = ChisloStr(1, Int(Right(Chislo, 1)))
дес = ChisloStr(2, Left(Int(Right(Chislo, 2)), 1))
End If
сто = ChisloStr(3, Int(Left(Right(Chislo, 3), 1)))

End If
If Len(Chislo) = 4 Then тыс = ChisloStr(4, Int(Left(Right(Chislo, 4), 1)))
If Len(Chislo) = 5 Then тыс = ChisloStr(4, Int(Left(Chislo, 2)))
End If
TransInteger = тыс + " " + сто + " " + дес + " " + ед
End Function


 
Санек-Ш   (2004-03-04 12:30) [9]

Вот на VB, даже на VBA... В pascal переделать очень просто, даже новичку в Дельфях... теже массивы и строковые операторы... Короче кому надо сделает

Public Function TransInteger(Chislo As String) As String
Dim ChisloStr(4, 20) As String

ChisloStr(1, 0) = ""
ChisloStr(1, 1) = "один"
ChisloStr(1, 2) = "два"
ChisloStr(1, 3) = "три"
ChisloStr(1, 4) = "четыре"
ChisloStr(1, 5) = "пять"
ChisloStr(1, 6) = "шесть"
ChisloStr(1, 7) = "семь"
ChisloStr(1, 8) = "восемь"
ChisloStr(1, 9) = "девять"

ChisloStr(1, 10) = "десять"
ChisloStr(1, 11) = "одинадцать"
ChisloStr(1, 12) = "двенадцать"
ChisloStr(1, 13) = "тринадцать"
ChisloStr(1, 14) = "четырнадцать"
ChisloStr(1, 15) = "пятнадцать"
ChisloStr(1, 16) = "шестнадцать"
ChisloStr(1, 17) = "семнадцать"
ChisloStr(1, 18) = "восемнадцать"
ChisloStr(1, 19) = "девятнадцать"

ChisloStr(2, 1) = "десять"
ChisloStr(2, 2) = "двадцать"
ChisloStr(2, 3) = "тридцать"
ChisloStr(2, 4) = "сорок"
ChisloStr(2, 5) = "пятьдесят"
ChisloStr(2, 6) = "шестьдесят"
ChisloStr(2, 7) = "семьдесят"
ChisloStr(2, 8) = "восемьдесят"
ChisloStr(2, 9) = "девяносто"

ChisloStr(3, 1) = "сто"
ChisloStr(3, 2) = "двести"
ChisloStr(3, 3) = "триста"
ChisloStr(3, 4) = "четыреста"
ChisloStr(3, 5) = "пятьсот"
ChisloStr(3, 6) = "шестьсот"
ChisloStr(3, 7) = "семьсот"
ChisloStr(3, 8) = "восемьсот"
ChisloStr(3, 9) = "девятьсот"

ChisloStr(4, 1) = "одна тысяча"
ChisloStr(4, 2) = "две тысячи"
ChisloStr(4, 3) = "три тысячи"
ChisloStr(4, 4) = "четыре тысячи"
ChisloStr(4, 5) = "пять тысяч"
ChisloStr(4, 6) = "шесть тысяч"
ChisloStr(4, 7) = "семь тысяч"
ChisloStr(4, 8) = "восемь тысяч"
ChisloStr(4, 9) = "девять тысяч"
ChisloStr(4, 10) = "десять тысяч"
ChisloStr(4, 11) = "одинадцать тысяч"
ChisloStr(4, 12) = "двенадцать тысяч"
ChisloStr(4, 13) = "тринадцать тысяч"
ChisloStr(4, 14) = "четырнадцать тысяч"
ChisloStr(4, 15) = "пятнадцать тысяч"
If Int(Chislo) < 16000 Then
If Len(Chislo) > 2 Then
If Int(Right((Chislo), 2)) > 0 And Int(Right((Chislo), 2)) < 20 Then
ед = ""
дес = ChisloStr(1, Int(Right(Chislo, 2)))
Else
ед = ChisloStr(1, Int(Right(Chislo, 1)))
дес = ChisloStr(2, Left(Int(Right(Chislo, 2)), 1))
End If
сто = ChisloStr(3, Int(Left(Right(Chislo, 3), 1)))

End If
If Len(Chislo) = 4 Then тыс = ChisloStr(4, Int(Left(Right(Chislo, 4), 1)))
If Len(Chislo) = 5 Then тыс = ChisloStr(4, Int(Left(Chislo, 2)))
End If
TransInteger = тыс + " " + сто + " " + дес + " " + ед
End Function


 
Санек-Ш   (2004-03-04 12:32) [10]

Вот на VB, даже на VBA... В pascal переделать очень просто, даже новичку в Дельфях... теже массивы и строковые операторы... Короче кому надо сделает

Public Function TransInteger(Chislo As String) As String
Dim ChisloStr(4, 20) As String

ChisloStr(1, 0) = ""
ChisloStr(1, 1) = "один"
ChisloStr(1, 2) = "два"
ChisloStr(1, 3) = "три"
ChisloStr(1, 4) = "четыре"
ChisloStr(1, 5) = "пять"
ChisloStr(1, 6) = "шесть"
ChisloStr(1, 7) = "семь"
ChisloStr(1, 8) = "восемь"
ChisloStr(1, 9) = "девять"

ChisloStr(1, 10) = "десять"
ChisloStr(1, 11) = "одинадцать"
ChisloStr(1, 12) = "двенадцать"
ChisloStr(1, 13) = "тринадцать"
ChisloStr(1, 14) = "четырнадцать"
ChisloStr(1, 15) = "пятнадцать"
ChisloStr(1, 16) = "шестнадцать"
ChisloStr(1, 17) = "семнадцать"
ChisloStr(1, 18) = "восемнадцать"
ChisloStr(1, 19) = "девятнадцать"

ChisloStr(2, 1) = "десять"
ChisloStr(2, 2) = "двадцать"
ChisloStr(2, 3) = "тридцать"
ChisloStr(2, 4) = "сорок"
ChisloStr(2, 5) = "пятьдесят"
ChisloStr(2, 6) = "шестьдесят"
ChisloStr(2, 7) = "семьдесят"
ChisloStr(2, 8) = "восемьдесят"
ChisloStr(2, 9) = "девяносто"

ChisloStr(3, 1) = "сто"
ChisloStr(3, 2) = "двести"
ChisloStr(3, 3) = "триста"
ChisloStr(3, 4) = "четыреста"
ChisloStr(3, 5) = "пятьсот"
ChisloStr(3, 6) = "шестьсот"
ChisloStr(3, 7) = "семьсот"
ChisloStr(3, 8) = "восемьсот"
ChisloStr(3, 9) = "девятьсот"

ChisloStr(4, 1) = "одна тысяча"
ChisloStr(4, 2) = "две тысячи"
ChisloStr(4, 3) = "три тысячи"
ChisloStr(4, 4) = "четыре тысячи"
ChisloStr(4, 5) = "пять тысяч"
ChisloStr(4, 6) = "шесть тысяч"
ChisloStr(4, 7) = "семь тысяч"
ChisloStr(4, 8) = "восемь тысяч"
ChisloStr(4, 9) = "девять тысяч"
ChisloStr(4, 10) = "десять тысяч"
ChisloStr(4, 11) = "одинадцать тысяч"
ChisloStr(4, 12) = "двенадцать тысяч"
ChisloStr(4, 13) = "тринадцать тысяч"
ChisloStr(4, 14) = "четырнадцать тысяч"
ChisloStr(4, 15) = "пятнадцать тысяч"
If Int(Chislo) < 16000 Then
If Len(Chislo) > 2 Then
If Int(Right((Chislo), 2)) > 0 And Int(Right((Chislo), 2)) < 20 Then
ед = ""
дес = ChisloStr(1, Int(Right(Chislo, 2)))
Else
ед = ChisloStr(1, Int(Right(Chislo, 1)))
дес = ChisloStr(2, Left(Int(Right(Chislo, 2)), 1))
End If
сто = ChisloStr(3, Int(Left(Right(Chislo, 3), 1)))

End If
If Len(Chislo) = 4 Then тыс = ChisloStr(4, Int(Left(Right(Chislo, 4), 1)))
If Len(Chislo) = 5 Then тыс = ChisloStr(4, Int(Left(Chislo, 2)))
End If
TransInteger = тыс + " " + сто + " " + дес + " " + ед
End Function


 
Санек-Ш   (2004-03-04 12:38) [11]

ОГО с эхом получилось :))
Ну тады пардон.


 
Builder ©   (2004-03-04 12:40) [12]

Я не совсем понял, три раза повтор это обязательное устовие написания? :), алгоритм пишется в течении 20 мин, что то новое узнать о Паскале вряд ли получиться, все самое простое. Но это мое сугубо личное мнение. Хотя в Дельфи я очень и очень слаб...


 
Amoeba ©   (2004-03-04 12:52) [13]

В сети легко найти готовые качественно написанные модули.


 
Gennadiy ©   (2004-03-04 13:56) [14]

Такая функция довольно простая могу выслать по почте.


 
TransparentGhost   (2004-03-04 17:31) [15]

Jesli komu nado, mogu i na latishskom vislat" :o)


 
BJValentine ©   (2004-03-04 19:28) [16]

А что делать тем, кому не надо? 8-D


 
DelphiN! ©   (2004-03-05 15:17) [17]

Вот 13 способов реализации этой ф-ии :-)

http://www.delphisyte.ru/Articles/base2/sum_written_out.html

http://www.delphisyte.ru/Articles/base2/sum_written_out2.html

http://www.delphisyte.ru/Articles/base2/sum_written_out3.html

http://www.delphisyte.ru/Articles/base2/sum_written_out4.html

http://www.delphisyte.ru/Articles/base2/sum_written_out5.html

http://www.delphisyte.ru/Articles/base2/sum_written_out6.html

http://www.delphisyte.ru/Articles/base2/sum_written_out7.html

http://www.delphisyte.ru/Articles/base2/sum_written_out8.html

http://www.delphisyte.ru/Articles/base2/sum_written_out9.html

http://www.delphisyte.ru/Articles/base2/sum_written_out10.html

http://www.delphisyte.ru/Articles/base2/sum_written_out11.html

http://www.delphisyte.ru/Articles/base2/sum_written_out12.html

http://www.delphisyte.ru/Articles/base2/sum_written_out13.html


 
TransparentGhost   (2004-03-05 16:30) [18]

komu ne nado, tem tozha vishlju :o)


 
WebErr ©   (2004-03-05 17:38) [19]

Есть несложная функция в Windows 32 API - IntToRusChislo c 15-ю параметрами. Кто самый смелый - вперёд. А вообще сотрите этот флуд - совместите приятное с полезным! Модераторы! :))))



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.035 c
11-1057512455
Ajax
2003-07-06 21:27
2004.03.28
Смена языка интерфейса


3-1077877254
Алексей
2004-02-27 13:20
2004.03.28
DbGrid выделенные строки


3-1074853610
b0bi
2004-01-23 13:26
2004.03.28
что лучше юзать char или varchar?


4-1073138516
GrayFace
2004-01-03 17:01
2004.03.28
Как взять ширину символа, отступ до и отступ после него.


1-1078906715
neg2001
2004-03-10 11:18
2004.03.28
Сервер приложений в виде WebService по Win2003





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский