Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.04 c
9-1098852156
Malefic
2004-10-27 08:42
2005.01.30
Asphyre и PowerDraw: Почему спрайт коряво перемещается?


1-1106039986
Aln
2005-01-18 12:19
2005.01.30
вопрос вопросительный!


1-1105831404
Vcl
2005-01-16 02:23
2005.01.30
Как спрятать курсор в TEdit ?


14-1105616104
4eshka)
2005-01-13 14:35
2005.01.30
Сравнения строк


14-1105456159
Petrovich_
2005-01-11 18:09
2005.01.30
C++





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский