число в Текстовом виде

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

число в Текстовом виде

Сообщение Espada »

привет. Хотел узнать, как записать число текстом? вроде бы есть функция перевода, но в Helpe я её не нашел(
пример: нужно отобразить число 2820 так: Две тысячи восемьсот двадцать евро. Спасибо
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: число в Текстовом виде

Сообщение Den »

на форуме есть поиск. наберите там что-нить вроде "число прописью"
Ольга
Постоянный обитатель
Сообщения: 135
Зарегистрирован: 29 мар 2005, 17:49

Re: число в Текстовом виде

Сообщение Ольга »

DoubleToString(KLVAL.nrec, 2820)
или
DoubleToStr(2820, '\n4 евро')

:grin:
LaaLaa

Re: число в Текстовом виде

Сообщение LaaLaa »

Ольга рассказала про функции для VIP и отчетов на FCOM.

А для отчетов на FastReport есть еще другая функция FloatToWords

Код: Выделить всё

What’s New 102.26899

Добавил функцию для печати числа прописью:

FloatToWords(Sum: double; RubStr, KopStr: string; KopWord, FirstUp: boolean): string;

Sum     - Число
*RubStr  - Строка с наименованием валюты
          по умолчанию "рубль;рубля;рублей"
*KopStr  - Строка с наименованием сотых валюты
          по умолчанию "копейка;копейки;копеек"
KopWord - Копейки числом или прописью (True - прописью)
FirstUp - Первая буква в верхнем регистре (True - в верхнем регистре)

•	Для того чтобы выводились значения поучолчанию, нужно передавать пустую строку.

Доработки: ПИР 102.72360 и 102.76471
Добавлено два необязательных параметра HideKop и Gender

FloatToWords(Sum: double; RubStr, KopStr: string; KopWord, FirstUp: boolean; HideKop: boolean = False; Gender: word = gndMF): string',

HideKop - прятать копейки (по умолчанию False - копейки выводятся).  Параметр задает нужно ли выводить копейки.
Gender.
  Параметр задает в каком роде (мужском, женском, среднем) выдавать результат.
  Параметр влияет как на целую часть (рубли), так и на дробную (копейки).
В скриптах FastReport дополнительно стали доступны девять констант.
От слов:
Male gender   - мужской род
Female gender - женский род
Neuter gender - средний род
Соответственно:
  gndMM - рубли в мужском роде, копейки в мужском роде
  gndMF - рубли в мужском роде, копейки в женском роде
  gndFM - рубли в женском роде, копейки в мужском роде
  gndFF - рубли в женском роде, копейки в женском роде
  gndMN - рубли в мужском роде, копейки в среднем роде
  gndNM - рубли в среднем роде, копейки в мужском роде
  gndFN - рубли в женском роде, копейки в среднем роде
  gndNF - рубли в среднем роде, копейки в женском роде
  gndNN - рубли в среднем роде, копейки в среднем роде

По умолчанию значение gndMF - рубли в мужском роде, копейки в женском роде
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: число в Текстовом виде

Сообщение Алексей »

будем знать... хотя можно в поток сразу строку кидать из випа :)
LaaLaa

Re: число в Текстовом виде

Сообщение LaaLaa »

Алексей писал(а):будем знать... хотя можно в поток сразу строку кидать из випа :)
Но если потребуется отчет с итогами по странице прописью то тогда http://tyumbit.ru/gal_forum/viewtopic.php?f=8&t=10332
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: число в Текстовом виде

Сообщение Алексей »

спасибо, как раз понадобились суммы по страницам в цифрах. вывел.
НО не могу найти как вывести число прописью БЕЗ валют копеек и прочего? просто "Триста двадцать пять" ?
Irina_
Местный житель
Сообщения: 547
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: число в Текстовом виде

Сообщение Irina_ »

См.в документации примеры по
function DoubleToStr(num: double, format: string): string;
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: число в Текстовом виде

Сообщение Алексей »

речь наверное о DoubletoString, но речь о FastReport... там эта функция даёт ошибку.

воспользовался всё той же FloatToWords, без валюты, параметр ";;",вывел копейки цифрами (00) и потом вырезал :)
правда потом оказалось - всё это не нужно. удалил :)
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: число в Текстовом виде

Сообщение RAJAH »

Что я делаю не так? Пишу:

Код: Выделить всё

FloatToWords(kotp, 'целых', 'десятых', false, false)
Получаю:
девяносто 00
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: число в Текстовом виде

Сообщение edward_K »

Можно чутка поколдовать и заюзать свои функции в фасте.
1. Объявить функции STatic - как можно посмотреть в ExtAttrClassInfo.vih
К слову это транзитный объект - в нем используются функции из объектов по работе с ВА и Вн.классификатором.
2. Чуть сложнее зарегить его использование для в Ctrl+F4

Код: Выделить всё

handler with replace Test_BeforeEnterModule on ExtensionPoint epBeforeEnterModule
                     (aContour: String; aModule: String)
Action
{
  RegisterGlobalIfc('C_ExtClass::iExtAttrClassInfo')
}
3. А теперь в фасте можно юзать

Код: Выделить всё

[CompileVipExpression('sGetAttr(coDogovor, ' + IntToStr(<DOCS."CDOGOVOR">) + ', 
''Наименование внешнего атрибута'')')]
ищите в описаниях к патчам 102.138534, 101.58174.
Без 2 у меня не выходило использовать ВА в любом месте в фасте.
В вашем же случае никто не запрещает вам вызвать DoubleToStr таким же методом - она доступна по Ctrl+F4 - значит можно использовать.
Вообще посмотрите повнимательней на доступные функции.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: число в Текстовом виде

Сообщение RAJAH »

edward_K писал(а):В вашем же случае никто не запрещает вам вызвать DoubleToStr таким же методом
Действительно, спасибо!
Ответить