Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

DecimalSeparator   Найти похожие ветки 

 
Viruz   (2005-01-19 11:27) [0]

Как многие знают удобные функции форматрования строк format, intToStr, floatToStr и т.д. используют глобальные переменные разделителей, вообще их там много но для меня головную боль являет именно DecimalSeparator.
Вот хочу чтобы разделитель был только скажем точкой, соотвественно высталяю его насильно при запукске и работаю дальше. Только вот проблема, если в системе происходят некие применения системных параметров, например попробуйте нажать на применить в свойствах экрана, прога сама пречитывает эти константы и сама их по новой выставляет во время выполнения. Как бы этого избежать?


 
Vlad Oshin ©   (2005-01-19 11:41) [1]

если
Изменение системных параметров
Все будет делаться с помощью функции SystemParametersInfo:

function SystemParametersInfo(uiAction, uiParam: UINT; pvParam: Pointer; fWinIni: UINT): BOOL;
uiAction
Одна из констант spi_xxx (список - ниже)
uiParam
Значение зависит от uiAction, если в описании соотв. spi_xxx константы ничего о uiParam не сказано, то нуль.
pvParam
Определяет значение изменяемого параметра (имеет тип Pointer). Также в это поле записывается возвращаемое значение. Если используется константа типа SPI_GETxxx, то в переменную на которую указывает pvParam будет помещен результат. С константами SPI_SETxxx аналогично.
fWinIni
Если системный параметр будет Устанавливаться (не считываться), то значение этого поля определяет, будет ли изменен соответствующий .ini файл, а также, будет ли послано сообщение WM_SETTINGCHANGE всм окнам верхнего уровня, чтобы они смогли принять эти изменения для корректировки своего состояния. Параметр м.б. равен нулю или одной из следующих констант:
SPIF_UPDATEINIFILE
Записать изменения в .ini файл
SPIF_SENDCHANGE
Послать сообщение WM_SETTINGCHANGE после обновления пользовательского профайла (.ini файла)
Если выполнение прошло успешно, возвращается True иначе - False

то
можть реагировать на соотв. сообщение?


 
Amoeba ©   (2005-01-19 11:47) [2]


> Viruz   (19.01.05 11:27)  

А может не стоит насильно навязывать пользователю что в качестве DecimalSeparator должна использоваться непременно точка? Не лучше ли все-таки оставить за ним возможность выбора?


 
Viruz   (2005-01-19 12:47) [3]

> Amoeba ©   (19.01.05 11:47) [2]
>
> > Viruz   (19.01.05 11:27)  
>
> А может не стоит насильно навязывать пользователю

да вобщем не в пользователе дело, а в верном формировании строк для передачи в др приложения


 
Плохиш ©   (2005-01-19 12:54) [4]


>Viruz   (19.01.05 12:47) [3]

>да вобщем не в пользователе дело, а в верном формировании строк для передачи в др приложения

Так и устанавливай перед каждой передачей.


 
Style ©   (2005-01-19 12:57) [5]

Application.UpdateFormatSettings := false;


 
REA   (2005-01-19 13:47) [6]

>да вобщем не в пользователе дело, а в верном формировании строк для передачи в др приложения

Есть варианты функций (в D7 кажется), где используются не глобальные настройки.


 
Юрий Зотов ©   (2005-01-19 14:00) [7]

> Viruz   (19.01.05 12:47) [3]

> да вобщем не в пользователе дело, а в верном формировании
> строк для передачи в др приложения

Вот как раз в этом случае и не стоит менять системный DecimalSeparator на собственный. Тогда все приложения будут использовать один и тот же.


 
Style ©   (2005-01-19 14:08) [8]

Обычно проблемы могут возникнуть наоборот при вызове StrToFloat... Тогда перед вызовом StrToFloat, можно просто заминить символы ".", "," на текущий DecimalSeparator в конвертируемой строке.

2 Ю.З.


 
Style ©   (2005-01-19 14:09) [9]


> Вот как раз в этом случае и не стоит менять системный DecimalSeparator
> на собственный. Тогда все приложения будут использовать
> один и тот же.


2 Ю.З.

Ну почему, если приложение ДОСовское и там требуют определенный формат чисел..



Страницы: 1 вся ветка

Текущий архив: 2005.01.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
3-1103872708
Mid
2004-12-24 10:18
2005.01.30
Проблема с кирилицей в QReport


3-1104134539
Dell3r
2004-12-27 11:02
2005.01.30
Query не дает редактировать


3-1103049469
TheEd
2004-12-14 21:37
2005.01.30
Как корректно защититься от краха Paradox-баз


1-1106136747
igor_buz
2005-01-19 15:12
2005.01.30
Как определить какая процедура вызвала открытие формы?


6-1100692418
Dmitry V. Averuanov
2004-11-17 14:53
2005.01.30
Изменить Gateway