[oodisc] Number in words

Vladimir Bukhal vbux на artmed.ru
Вт Окт 7 01:30:55 MSD 2003


Здравствуйте, Алексей.
Я тоже работал над модулем. Как бы не запутаться в правках.

>> 2.Все же имеет иначе вычислять копейки:
>> iCopecks = Int((dInNum-Int(dInNum))*100+0.5)
>> Теперь все абсолютно корректно. 
AK> В смысле, это на тот случай, если по результатам
AK> вычисления будет более двух цифр после запятой?
AK> Тогда логично. Однако я предлагаю ввести функцию
AK> getFraction, чтобы можно было задать иное количество
AK> цифр после запятой, если, например, у нас будут
AK> тонны и килограммы.

>> Теперь можно говорить о включении
>> миллиардов.

AK> Всё равно зашкаливает на 999 999 999.99. Конечно, это
AK> логичнее, чем 21474835.99.
Я добавил миллиарды.
У меня предел 2 089 999 999.99, но это опять же разрешимо, если не
использовать mod

>> 3.Новая версия функции propis в прикрепленном файле.
>> Теперь она обрабатывает все выделения в таблице или текстовом
>> документе и меняет числовые на их эквивалент прописью.

AK> По Вашему варианту у меня следующие замечания:

AK> -- много лишних переменных, и, IMHO, слишком сложно реализовано
AK> получение выделения в таблице;
посмотрю.

AK> -- в текстовом документе, наверное, должна вставляться не
AK> просто сумма прописью, а что-то вроде "X руб. Y коп. (икс
AK> рублей Y коп.)";
Я думаю, что это лучше определять пользователю.

AK> -- еще раз призываю соблюдать высказанные мной пожелания
AK> по оформлению кода. Кстати, в VB вместо конструкции
AK> while ... wend надлежит использовать Do While ... Loop.

AK> Часть из названного я исправил в приложенном варианте. Но
AK> всё это меркнет перед вопросом: почему, собственно, у
AK> нас вызывается именно n2s_ru_rru? Опять мы стоим перед
AK> дилеммой: то ли организовать десяток пользовательских
AK> функций, в которых потом будет трудно разобраться, то
AK> ли делать диалог с возможностью выбора -- но этот диалог
AK> надоест пользователю со сторого же раза, если он всегда
AK> использует только один вариант.

>> 4.Постараюсь продвинуться к большей параметризации.
>> В моем варианте, это все же достигалось меньшей кровью.
>> Для вашего, думаю, придется принять в отдельное рассмотрение
>> iOrder=1, оставив стандартные наборы, ввести опциональные параметры
>> form1 As String,form2 As String,form3 As String,
>> формы слова
>> bisFemale As boolean,sDr As String

AK> Так у меня же всё это есть! Посмотрите, с какими параметрами
AK> вызывается getCase: bGenitive As Boolean, bPlural As Boolean.
AK> Вот этой парой параметров (Именительный/Родительный, Ед./Множ.)
AK> описывается всё множество требуемых форм. Это же явно лучше,
AK> чем безликие form1, form2, form3.

>> род                  обозначение дробной части или "", если не
>> требуется
Посмотрите как это организовано у меня.

AK> Это да, это надо. Только как бы обойтись без умножения
AK> количества пользовательских функций...

Еще у Вас была путаница с украинскими миллионами.


С уважением,
  Владимир <vbux на artmed.ru>
----------- УМЕДХЭБС ЮБУФШ -----------
·И?в8?j e?ф???Ъг8?r???К,yщЫВE+?Зb?ЙФj)??b?к?ЁЖ???!?ИМЁЩ?с}tс©ъСmзw?©·И?у??


Подробная информация о списке рассылки Oo-discuss