|
работа с DO CASE
|
|||
---|---|---|---|
#18+
у меня есть вывод в отчёте числовое значения пропесью мне надо чтобы после этого числа шло слово рублей но не просто каждый раз рублей а с учётом окончания например (Двести пятьдесят рублей), (тридсать один рубль) или (сорок два рубля) как мне это зделать я зделал так: DO CASE CASE INLIST(r,'один') STORE 'рубль' TO r CASE INLIST(r,'два','три','четыри') STORE 'рубля' TO r CASE INLIST(r,'пять','шесть','семь','восемь','девять') STORE 'рублей' TO r ENDCASE но оно почемуто у меня нечего не выводит ваще в отчёт помогите разрешить проблему r-переменная глобальная обозначена в public ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2010, 00:56 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
Почему бы не выводить просто "руб." Формировать окончание нужно еще на этапе разбора самого числа, а не строки. Не видя функции, которую Вы используете, трудно сказать что-то более определенное. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2010, 06:23 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
Из справочника: lcExt="" Do Case case tnflag=1 lcExt='ей' &&по умолчанию "рублей" if lnTens<>1 Do case case lnUnits=1 &&1, 21,31,... lcExt='ь' &&"рубль" case lnUnits>1.and.lnUnits<5 lcExt='я' &&"рубля" Endcase Endif ......................... ......................... Endcase Клепинин, Агафонова, VFP 9.0, 2007, стр. 412 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2010, 06:39 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
лорд преисподнейCASE INLIST(r,'два','три','четыри')кому-то денег не будет совсем с такими "четырьмями" рублями ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2010, 09:30 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
лорд преисподней, допили лучше используемую функцию вывода суммы прописью, всего-то надо проанализировать 2 последних цифры, а не ловить эти пресловутые "четыри". А если "сорок", что тогда? (А суммы что - только целочисленные?) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2010, 10:05 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
лорд преисподней, И вообще, если самому слабО, то поищи на фокс-сайтах функции по переводу сумм в прописи. Лучше на них посмотреть и разобраться,- много пользы будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2010, 10:32 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
лорд преисподнейу меня есть вывод в отчёте числовое значения пропесью мне надо чтобы после этого числа шло слово рублей но не просто каждый раз рублей а с учётом окончания например (Двести пятьдесят рублей), (тридсать один рубль) или (сорок два рубля) как мне это зделать я зделал так: DO CASE CASE INLIST(r,'один') STORE 'рубль' TO r CASE INLIST(r,'два','три','четыри') STORE 'рубля' TO r CASE INLIST(r,'пять','шесть','семь','восемь','девять') STORE 'рублей' TO r ENDCASE но оно почемуто у меня нечего не выводит ваще в отчёт помогите разрешить проблему r-переменная глобальная обозначена в public У DO CASE есть еще секция OTHERWISE добавь в нее вывод значений и смотри чего у тебя не обработалось. Примерно так Код: plaintext 1. 2. 3.
PS Писать ответ в переменную с входным параметром не самый лучший подход в разработке. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2010, 10:52 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
у меня работает перевод числа в строку и неплохо я использую DLL скаченую с сайта ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2010, 12:09 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
лорд преисподней, может тогда что-нибудь типа этого? Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2010, 13:02 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
лорд преисподнейпроп е сью Интересное слово. Представляется пёс, несущийся иноходью пропесью в глубинах преисподней... лорд преисподнейCASE INLIST(r,'два','три','четыр и ') Нет такой буквы цифры! Кстати, в _программе_ не хватает ещё одной цифры (искренне надеюсь, что перебираются цифры, а не числа :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2010, 22:20 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
XAndy, очевидно, пытается отодрать последнее слово в сумме прописью... (кстати, каюсь: забыл в предложенном варианте INT(nSum)... Ну, ТС, если ему интересно, доработает ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2010, 09:02 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
Очень давно я делал так: Выделял последнюю цифру из суммы (числового значения) Например: CZ – числовое значение. CZ=1234567 PC=VAL(RIGHT(ALLTRIM(STR(CZ)),1)) R=”руб.” DO CASE CASE PC = 1 R=”рубль” CASE PC > 1 AND PC <5 R=”рубля” CASE PC > 4 R=”рублей” ENDCASE Потом R дописывал к суме "ПРОПЕСЬЮ" Кажись так. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2010, 14:35 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
WasilichОчень давно я делал так: Выделял последнюю цифру из суммы (числового значения) Например: CZ – числовое значение. CZ=1234567 PC=VAL(RIGHT(ALLTRIM(STR(CZ)),1)) R=”руб.” DO CASE CASE PC = 1 R=”рубль” CASE PC > 1 AND PC <5 R=”рубля” CASE PC > 4 R=”рублей” ENDCASE Потом R дописывал к суме "ПРОПЕСЬЮ" Кажись так. Так у тебя "111 рубль" будет выше уже писали что две цифры последние надо анализировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2010, 15:09 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
Извиняюсь забыл об условии 10 - 20 рублей. Точно давно было. CZ=1234567 PC1=VAL(RIGHT(ALLTRIM(STR(CZ)),1)) PC2=VAL(RIGHT(ALLTRIM(STR(CZ)),2)) R=”руб.” IF PC2>10 AND PC2 < 20 R=”рублей” ELSE DO CASE CASE PC1 = 1 R=”рубль” CASE PC1 > 1 AND PC1 <5 R=”рубля” CASE PC1 > 4 R=”рублей” ENDCASE ENDIF ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2010, 15:14 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
Wasilich, Ещё 0 рублей не учтен, ещё 0.12 рублей может потребоваться (бывает требуется без разложения на рубли/копейки), ещё не только рубли бывают, но и другие валюты, которые бывают и женского, и среднего рода, да и не только деньги :) В простейшем случае может выручить такая функция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
А в общем случае всё несколько сложнее. Для валют заводят свои справочники с прописанными правилами. Ещё есть более умные алгоритмы, которые сами знают правила русского языка... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2010, 12:36 |
|
работа с DO CASE
|
|||
---|---|---|---|
#18+
Все правильно уважаемый XAndy. Конкретной задаче нужно конкретное решение. Я показал примерное направление решения проблеммы. А самих направлений - наверное столько, сколько программистов. В любом случае нужны знания, опыт и умение логически мыслить. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2010, 15:01 |
|
|
start [/forum/topic.php?fid=41&msg=36532234&tid=1585474]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 381ms |
total: | 525ms |
0 / 0 |