Формат отображения дробный чисел

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7328
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Формат отображения дробный чисел

Сообщение Игорь Столяров »

Привет всем !

Есть ли в Clarion возможность отображать (форматировать) десятичное число с дробной частью, в соответсвии
с установленными в настройке Windows "Язык и региональные стандарты" значениями разделителей:
- разделитель целой и дробной части
- разделитель групп разрядов ?

Зараннее спасибо ...
За теми кто отстал - не возвращаться. (С) Кодекс
seawolf
Старожил
Сообщения: 213
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: Формат отображения дробный чисел

Сообщение seawolf »

Надо видимо попробовать слазить в реестр (там наверняка вид по умолчанию в чем-то хранится) и потом разобрать его в нужый вариант. Другого в голову не приходит.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7328
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Re: Формат отображения дробный чисел

Сообщение Игорь Столяров »

Не знаю как в реестре, но есть функции WinAPI позволяющие получить значения разделителей тысяч разрядов, дробной и целой части частей числа.
С этим проблем нет. Вопрос в том, есть ли значения для форматирования чисел в Clarion с учетом этих настроек ...
Например для форматирования даты есть шаблон Format(ДАТА,@D17/@D18) ....
За теми кто отстал - не возвращаться. (С) Кодекс
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Формат отображения дробный чисел

Сообщение Алексей- Софт-Центр »

Добрый день!
Это Вы про это:
@N9.2 4,550.75 Two decimal places, period decimal separator
@N_9.2B 4550.75 Two decimal places, period decimal separator, no grouping, blank if zero
@N_9`2 4550,75 Two decimal places, comma decimal separator
@N9.`2 4.550,75 Comma decimal separator, group with periods
@N9_`2 4 550,75 Comma decimal separator, group with spaces

или я не въехал?

Алексей
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7328
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Re: Формат отображения дробный чисел

Сообщение Игорь Столяров »

Не совсем.
Эти форматы отображают число с установленным в самом формате разделителем.
И никак не реагируют на установку разделителей в настройке форматов отображения чисел Windows ....
За теми кто отстал - не возвращаться. (С) Кодекс
BOB
Ветеран
Сообщения: 336
Зарегистрирован: 17 Июль 2005, 5:43

Re: Формат отображения дробный чисел

Сообщение BOB »

Вот это
@N_9`2 4550,75 Two decimal places, comma decimal separator
@N9.`2 4.550,75 Comma decimal separator, group with periods
в шарпе напимер не работает в листе , всегда разряды запятая и точность точка , об этом видимо и вопрос.
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Формат отображения дробный чисел

Сообщение Алексей- Софт-Центр »

Добрый день!
Игорь: что мешает
1. Взять из реестра: HKEY_USERS\.DEFULT\Control Panel\International
с помощью GetReg
значение разделителя, например .(точка) или ,(запятая)
2. В зависимости от этого в переменную CSTRING записать формат, например : FF='@N9.2'
3. Выводить данные с FORMAT(xxx,FF) , так как

FORMAT(value,picture)
FORMAT Returns a formatted numeric string.
value A numeric expression for the value to be formatted.
picture A picture token or the label of a CSTRING variable containing a picture token.

Или я опять не вьехал?

Алексей
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Re: Формат отображения дробный чисел

Сообщение Дед Пахом »

Я уверен, Игорю ничего не мешает, он просто спросил, нет ли встроенных picture tokens для десятичных чисел, типа @d17 для дат.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7328
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Re: Формат отображения дробный чисел

Сообщение Игорь Столяров »

Алексей- Софт-Центр писал(а):Или я опять не вьехал ? Алексей
Вот теперь как раз-таки все правильно.

Но фишка в том, что что если мы говорим юзеру, что "В прикладной программе разделители для тысячных и дробных разрядов чисел используются из настройки ОС Windows", то следует быть готовым к тому, что кроме точек и запятых там может оказать какая угодно хрень. Ситуация ухудшается если с программой работают пользователи из разных стран.

А дальше всетает вопрос о том, что нужно быть готовым анализировать все возможные варианты разделителей и на их основании формировать некий шаблон отображения числа в прикладной программе. Получить разделители и написать формирование такого шаблона конечно можно, но достаточно грустно.

Еще один пример из жизни кроликов. При экспорте чисел (именно чисел с возможностью расчета по формулам, а не строк с изображением числа !), через OLE в MS Excel - числом считается строка состоящая из цифр и разделителей по региональной настройке Windows. Другими словами, если у пользователя за каким то ... установлен разделитель десятичных разрядов "," (запятая), то "123.45" (c точкой) - не считается числом. Да, можно переключить эту настройку для экспортируемой таблицы - но будет только хуже. Нужно выводить число с таким форматом разделителей, с которым работает пользователь на каждом конкретном компьютере (с настройкой Windows на этом компьютере). Вот поэтому и возник вопрос. Но видимо ответа нет - нужно писать обработку формата ручками ... :(
За теми кто отстал - не возвращаться. (С) Кодекс
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Формат отображения дробный чисел

Сообщение Алексей- Софт-Центр »

Добрый день!
При экспорте чисел (именно чисел с возможностью расчета по формулам, а не строк с изображением числа !), через OLE в MS Excel
Совершенно верно. Сколько раз с таким сталкиваемся! Но пока нашли два решения, Одно из которых с некоторым допущением :)
1. В readme описания установки программы огромными буковками пишем, что необходимо установить в настройках панели управления в качестве разделителя точку.
(здесь возможно неудобство пользователя, постоянно переключая настройки, но мы "чисты перед законом" :) )
2. Допускаем, что в большенстве случаях разделителей всего два: точка или запятая. И в том же readme об этом пишем.


Алексей
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7328
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Re: Формат отображения дробный чисел

Сообщение Игорь Столяров »

Если считать, что лучше что-то, чем ничего - то это решение.
Как говорится "сколько ни пиши ReadMe - программа от этого лучше работать не станет" ... ;)

К сожалению изменение напрямую в региональных настройках могут привести к проблемам работы с другим ПО, установленным на компьютере.
Предложения сделать это вручную - не всякий пользователь полезет их менять ...

Что касается указание используемых разделителей в настройках прикладной программы - то здесь сразу возникают проблемы использования программы на разных компьютерах, например в локальной сети, (на которых в общем случае могут быть разные региональные настройки Windows).

Нужно делать функцию форматирования числа с учетом региональных настроек Windows. Вот и все ... :)
За теми кто отстал - не возвращаться. (С) Кодекс
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Формат отображения дробный чисел

Сообщение Алексей- Софт-Центр »

Добрый день!
Нужно делать функцию форматирования числа с учетом региональных настроек Windows. Вот и все ...
Тем более, что это делается достаточно просто:
1. Считали настройку в переменную R string(1), используя Getreg.
2. В переменную CSTRIG FF='@N_-9'&R&'2'
3. Выводим Format(xxx,FF)
Как то так!

Алексей
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7328
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Re: Формат отображения дробный чисел

Сообщение Игорь Столяров »

В общем-то да, что-то вроде этого.
Только нужно предусмотреть еще:
- установку разделителя для тысяч;
- управлямое кол-во знаков после десятичной точки;
- получение разделителей через WinApi, а не из реестра (что бы избежать проблем совместимости версий Windows)
За теми кто отстал - не возвращаться. (С) Кодекс
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Формат отображения дробный чисел

Сообщение Developer »

Игорь Столяров писал(а): 29 Май 2011, 12:37Привет всем !

Есть ли в Clarion возможность отображать (форматировать) десятичное число с дробной частью, в соответсвии
с установленными в настройке Windows "Язык и региональные стандарты" значениями разделителей:
- разделитель целой и дробной части
- разделитель групп разрядов ?

Зараннее спасибо ...
Из всех высказываний так и не получен ответ на вопрос Игоря Столярова:
"Есть ли в Clarion возможность отображать (форматировать) десятичное число с дробной частью, в соответствии с установленными в настройке Windows "Язык и региональные стандарты" значениями разделителей" - есть ли штатное стандартное решение от SoftVelocity?

В настройке Windows "Язык и региональные стандарты" значениями разделителей" десятичный разделитель ',' (запятая) а в сгенерированном коде через шаблоны ABC '.' (точка)
Дед Пахом писал(а): 31 Май 2011, 18:23Я уверен, Игорю ничего не мешает, он просто спросил, нет ли встроенных picture tokens для десятичных чисел, типа @d17 для дат.
- Дед Пахом правильно подметил :wink:

Вопрос: где в шаблонах ABC изменить код Clarion для формата десятичного дробного разделителя с '.' (точки) на разделитель ',' (запятая) или применить автоформат токенов (шаблона формата числа) в соответствии с региональными настройками Windows аналогичный picture tokens для десятичных чисел, типа @d17 для дат?
Игорь Столяров писал(а): 02 Июнь 2011, 12:17Если считать, что лучше что-то, чем ничего - то это решение.
Как говорится "сколько ни пиши ReadMe - программа от этого лучше работать не станет" ... ;)

К сожалению изменение напрямую в региональных настройках могут привести к проблемам работы с другим ПО, установленным на компьютере.
Предложения сделать это вручную - не всякий пользователь полезет их менять ...

Что касается указание используемых разделителей в настройках прикладной программы - то здесь сразу возникают проблемы использования программы на разных компьютерах, например в локальной сети, (на которых в общем случае могут быть разные региональные настройки Windows).

Нужно делать функцию форматирования числа с учетом региональных настроек Windows. Вот и все ... :)
- Игорь, поделись информацией, решился ли у тебя этот вопрос?
С Уважением, Developer
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7328
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Формат отображения дробный чисел

Сообщение Игорь Столяров »

Developer писал(а): 20 Ноябрь 2018, 3:53Игорь, поделись информацией, решился ли у тебя этот вопрос?
Ну это Вы опять какого-то трупака столетнего копнули … ;) В том виде как вопрос задан - решения нет.

Но можно получить данные из WinAPI и сформировать формат с учётом региональных настроек
Windows, как описано в теме: viewtopic.php?f=1&t=471&hilit=GetLocaleInfo
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить