|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Decimal separator delphi/lazarus
Регистрация: 09.12.2008
Сообщений: 4,643
|
||
Просмотров: 7697
|
|
||||
И что, это адекватная причина не задавать свой вопрос на специализированных форумах "delphi/lazarus"? Хотя, если тебе "шашечки", а не "ехать", то можно и здесь...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
вообще, чтобы не изобретать подобного рода велосипеды, давно существует такое понятие, как "локализация".
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Не надо никаких классов. Просто где-то в свой библиотечный модуль (в котором в uses включить SysUtils) включить функции:
Код:
|
|||
![]() |
|
||||
Регистрация: 09.12.2008
Сообщений: 4,643
|
спасибо всем за ответы. Метод ShaggyDoc мне понятен и близок, но программа частично писана не мной, где она там читает и пишет - даже сложно сообразить, во множестве мест. Боюсь что поиском заменой я только запорчу все.
У меня вопрос к вам, zamtmn, про DecimalSeparator:='.'; и про то что таких мест много. Я на самом деле не знаю просто в каком месте в юните нужно вставлять эту строчку - после какого ключевого слова. Там где глобальные переменные декларируются? Ну то есть я совсем темный человек в делфи. А любимым методом тыка есть вероятность накосячить а не исправить |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
DecimalSeparator - это "глобальная переменная", описанная в модуле SysUtils. Он обычно включается в каждый другой модуль - там все основные процедуры и функции Pascal. Когда используются штатные функции, например StrToFloat, внутри них происходит чтение текущего состояния DecimalSeparator.
Цитата:
Альтернатива - написать, что для этой программы делать такую-то настройку Windows, что сразу делает программу любительской. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
ETCartman
Если нет желания разбираться что там и как в чужой программе - попробуй просто добавить в секцию инициализации соответствующего юнита (перед последним end. с точкой или после ключевого слова initialization если оно есть в конце модуля). Также можно добавить в "основной" файл проекта перед application.run. Но лучше таки разобраться и "обрамить" только нужные места. Делать "обертки" над системными функциями преобразования имхо не выход - таких функций довольно много, не только StrToFloat, придется править чужой код, "лишние" действия какими бы мизерными они небыли скажутся на производительности при обработке больших входных данных |
|||
![]() |
|
||||
Регистрация: 09.12.2008
Сообщений: 4,643
|
спасибо! работает после ключевого слова initialization
- в основном модуле
__________________
мой блог по некоторым вопросам |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Например: Код:
|
|||
![]() |
|
||||
Сообщений: n/a
|
Шёл бы ты отсюда http://www.delphimaster.ru
Есть такая глобальная переменная FormatSeting. Там твой сепаратор и сидит. Последний раз редактировалось bahil, 09.09.2013 в 13:28. |
|||
|
||||
Регистрация: 09.12.2008
Сообщений: 4,643
|
ShaggyDoc
Да спасибо вам за совет. в данном случае проблема в том что код я плохо знаю но знаю что там много чего читает, пишет и так далее. Тестировать каждую функцию сложно (ранее было оттестировано для US опций) Если я что то заново начну писать на паскале - начну прямо с вашего совета. Цитата:
bahil вам тоже спасибо за линк. Но я не пойду куда вы посылаете. Тут на форуме достаточно людей неплохо владеющих вопросом. На спецфоруме меня пошлют в Faq, потом еще поглумятся, и потом может быть что то выдавят. Тут люди предметные и без понтов - меня больше устраивает |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Потому и делают временные изменения глобальных настроек только в момент использования, и сразу их восстанавливают. Никакая программа не должна влиять на работу других приложений. Если уж записывать в initialization, то непременно надо сделать обратное действие в finalization этого же модуля. В этом случае настройки будут устанавливаться при загрузке вашей программы и востанавливаться при её выгрузке. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
ShaggyDoc, ETCartman
DecimalSeparator к настройкам ОС не имеет никакого отношения и работает только внутри данного сеанса данного приложения. Если его не вернуть обратно, максимум что может произойти - проблемы в других частях программы, которые ожидают запятую, а не точку. Если таких частей нет - то никаких проблем быть не может и восстанавливать ничего ненадо |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как извлечь цифры из числа?(на языке C#) | Георгий511 | Программирование | 3 | 15.12.2012 22:37 |
ЛИСП слои цвета преобразование | Gotch | LISP | 97 | 08.11.2011 10:22 |
Добавление символов в шрифт | Александер | Программирование | 188 | 01.06.2010 13:30 |
RGB_color в OLE_color как это сделать? | mmax | Программирование | 25 | 21.09.2006 10:42 |
Ед. измерения самостоятельно перескакивают с Decimal на Arch | Grinzaid | AutoCAD | 2 | 29.10.2003 15:25 |