Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разделитель дробной и целой части, в системе 
:(
    Опции темы
Step
Дата 22.6.2004, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: нет
Всего: 25



в ос виндоус есть настройка разделителя дробной и целой части,

как его узнать программным путем,


желательно без обращения к реестру, или предусматреть что реестр различных версий винды имеет различные ключи...


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Maverick
Дата 22.6.2004, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Сорри, что не совсем в сабж, но если надо внутри проги свой разделитель, то использовать можно DecimalSeparator := ' {то, что нужно}'...


--------------------
smile
PM ICQ GTalk   Вверх
dm9
Дата 22.6.2004, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



ИМХО, DecimalSeparator как раз и установлен изначально как в настройках Windows.
Но если надо поменять, то DecimalSeparator меняет только внутри приложения.
PM MAIL ICQ   Вверх
stab
Дата 22.6.2004, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



Цитата
ИМХО, DecimalSeparator как раз и установлен изначально как в настройках Windows.


угу, так и есть, а узнать без использования DecimalSeparator можно так:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
 buf: array[0..1] of Char;
begin
 GetLocaleInfo(GetThreadLocale, LOCALE_SDECIMAL, buf, 2);
 ShowMessage(buf);
end;



--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Step
Дата 22.6.2004, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: нет
Всего: 25



Спасибо


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Петрович
Дата 22.6.2004, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



И ещё, учтите, если не предпринять специальных действий, то значение DecimalSeparator может измениться уже во время работы приложения, если пользователь сменит настройку Windows!


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Medved
Дата 23.6.2004, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



2Петрович а что ты понимаешь под словосочетанием "если не предпринять специальных действий"?
Можно поподробнее?

Заранее благодарен!


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Петрович
Дата 23.6.2004, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



Цитата
Можно поподробнее?

Легко.
Дело в том, что при изменении интернациональных настроек, к которым относится формат даты, времени, чисел с плавающей точкой, и пр., Windows посылает всем приложениям специальное сообщение (имя не помню). По идее, грамотно написанные приложения должны как минимум перерисоваться с учетом этих настроек. Borland, как всегда, о нас позаботился и в этом случае. А именно, это сообщение ловит объект Application, и в соответствии с ним, повторно читает из Windows интернациональные настройки, переустанавливая соответствующие переменные модуля System (DateSeparator, ShortDateFormat, DecimalSeparator, и т.п.). Вообщем-то это наверное правильно. Однако, в некоторых случаях это может навредить (мне лично почти всегда smile.gif). Вот поэтому, у объекта Application есть свойство UpdateFormatSettings установленное по умолчанию в True. Если-же присвоить ему False, то Application будет игнорировать соответствующее сообщение от Windows, и не будет "на лету" менять переменные связанные с форматом.
Лично у меня, очень часто программы живут не сами по себе, а общаются с программыми на других компах, используют экспорт/импорт данных в вполне определенных текстовых форматах. А поскольку во многих случаях происходит неявное (неконтролируемое мною) преобразование число<>строка, дата<>строка (например tDateTimeField.AsString или StringVar := VariantVar), то я вынужден сам устанавливать нужные мне форматы. Ну и что-бы шаловливый пользователь не нарушил работу моей программы, я перед установкой собственных настроек делаю Application.UpdateFormatSettings := False;.
Естественно, для консольных приложений это не актуально - там нет Application, следовательно некому и "следить" за изменениями.

Хотелось коротенько, а получилось как всегда smile.gif



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Medved
Дата 24.6.2004, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Спасибо!


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.