Главная страница
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.035 c
3-1104121687
LeoAdmin
2004-12-27 07:28
2005.01.30
Вертикальная прокрутка в DBCtrlGrid


3-1103897690
Midas.dll
2004-12-24 17:14
2005.01.30
как зарегистрить


14-1105204577
X9
2005-01-08 20:16
2005.01.30
"Энциклопедия начинающего радиолюбителя" в эл. виде


3-1103801711
}|{yk
2004-12-23 14:35
2005.01.30
Где ошибка в триггере?


1-1105299352
chir
2005-01-09 22:35
2005.01.30
OnChange - игнор