Страница 1 из 1

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

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

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

Зараннее спасибо ...

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

Добавлено: 30 Май 2011, 9:58
seawolf
Надо видимо попробовать слазить в реестр (там наверняка вид по умолчанию в чем-то хранится) и потом разобрать его в нужый вариант. Другого в голову не приходит.

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

Добавлено: 30 Май 2011, 13:35
Игорь Столяров
Не знаю как в реестре, но есть функции WinAPI позволяющие получить значения разделителей тысяч разрядов, дробной и целой части частей числа.
С этим проблем нет. Вопрос в том, есть ли значения для форматирования чисел в Clarion с учетом этих настроек ...
Например для форматирования даты есть шаблон Format(ДАТА,@D17/@D18) ....

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

Добавлено: 31 Май 2011, 12:06
Алексей- Софт-Центр
Добрый день!
Это Вы про это:
@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

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

Алексей

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

Добавлено: 31 Май 2011, 12:35
Игорь Столяров
Не совсем.
Эти форматы отображают число с установленным в самом формате разделителем.
И никак не реагируют на установку разделителей в настройке форматов отображения чисел Windows ....

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

Добавлено: 31 Май 2011, 12:37
BOB
Вот это
@N_9`2 4550,75 Two decimal places, comma decimal separator
@N9.`2 4.550,75 Comma decimal separator, group with periods
в шарпе напимер не работает в листе , всегда разряды запятая и точность точка , об этом видимо и вопрос.

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

Добавлено: 31 Май 2011, 16:21
Алексей- Софт-Центр
Добрый день!
Игорь: что мешает
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.

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

Алексей

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

Добавлено: 31 Май 2011, 18:23
Дед Пахом
Я уверен, Игорю ничего не мешает, он просто спросил, нет ли встроенных picture tokens для десятичных чисел, типа @d17 для дат.

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

Добавлено: 02 Июнь 2011, 9:34
Игорь Столяров
Алексей- Софт-Центр писал(а):Или я опять не вьехал ? Алексей
Вот теперь как раз-таки все правильно.

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

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

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

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

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


Алексей

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

Добавлено: 02 Июнь 2011, 12:17
Игорь Столяров
Если считать, что лучше что-то, чем ничего - то это решение.
Как говорится "сколько ни пиши ReadMe - программа от этого лучше работать не станет" ... ;)

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

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

Нужно делать функцию форматирования числа с учетом региональных настроек Windows. Вот и все ... :)

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

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

Алексей

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

Добавлено: 02 Июнь 2011, 13:39
Игорь Столяров
В общем-то да, что-то вроде этого.
Только нужно предусмотреть еще:
- установку разделителя для тысяч;
- управлямое кол-во знаков после десятичной точки;
- получение разделителей через WinApi, а не из реестра (что бы избежать проблем совместимости версий Windows)

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

Добавлено: 20 Ноябрь 2018, 3:53
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. Вот и все ... :)
- Игорь, поделись информацией, решился ли у тебя этот вопрос?

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

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

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