Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 505

/ вопрос открыт /

Приветствую, уважаемые эксперты! Как правильно програмно изменить региональные настройки Win7 и XP, при открытии главной формы. Необходимо заменить разделитель с запятой на точку? Цель одна, чтобы при работе с программой разделитель был точкой, а при выходе из программы разделитель - запятая. Заранее спасибо.

Яковлев Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Яковлев (статус: Посетитель)
Вопрос отправлен: 15 июля 2011, 07:16
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Есть в модуле SysUtils глобальная переменная DecimalSeparator: Char. Она и представляет собой разделитель целой и дробной части чисел в функциях преобразований "Строка <---> Число". В начале программы (например, перед Application.Initialize()) присваивай ему точку.

Кстати, это не единственная переменная такого рода.

var CurrencyString: string;
var CurrencyFormat: Byte;
var NegCurrFormat: Byte;
var ThousandSeparator: Char;
var DecimalSeparator: Char;
var CurrencyDecimals: Byte;
var DateSeparator: Char;
var ShortDateFormat: string;
var LongDateFormat: string;
var TimeSeparator: Char;
var TimeAMString: string;
var TimePMString: string;
var ShortTimeFormat: string;
var LongTimeFormat: string;
var ShortMonthNames: array[1..12] of string;
var LongMonthNames: array[1..12] of string;
var ShortDayNames: array[1..7] of string;
var LongDayNames: array[1..7] of string;
var SysLocale: TSysLocale;
var EraNames: array[1..7] of string;
var EraYearOffsets: array[1..7] of Integer;
var TwoDigitYearCenturyWindow: Word = 50;
var ListSeparator: Char;

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 15 июля 2011, 08:20


Мини-форум вопроса

Всего сообщений: 52; последнее сообщение — 21 июля 2011, 07:59; участников в обсуждении: 6.

Страницы: [« Предыдущая] [1] [2] [3] [Следующая »]

Sonic-X

Sonic-X (статус: Посетитель), 17 июля 2011, 23:35 [#21]:

Если ты хочешь трогать региональные настройки
то тогда:

SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SDECIMAL,',');
Яковлев

Яковлев (статус: Посетитель), 18 июля 2011, 06:33 [#22]:

Не мат непопрет, закину гайку:
uses Registry
………….

procedure TMainForm.FormCreate(Sender: TObject);
var
Reg: TRegistry;
begin
//############################################################################
// Этот кусок кода должен быть последним в данном блоке.
edtDecimal.Visible := False;
// Устанавливаем разделитель точку.
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
// Проверяем какой разделитель установлен в реестре.
Reg.OpenKey('Control Panel\International',True);
// Запоминаем начальный разделитель.
edtDecimal.Text := '';
edtDecimal.Text := Reg.ReadString('sDecimal');

// Если точка, то выходим, не изменяя запись в реестре.
if Reg.ReadString('sDecimal') = '.' then
begin
Exit;
end
else
// Если запятая, то записываем точку в реестр.
if Reg.ReadString('sDecimal') = ',' then
begin
Reg.WriteString('sDecimal', '.');
Reg.CloseKey;
Reg.Free;
end;
// Уведомляем все приложения, что реестр был изменен.
SendMessage(HWND_BROADCAST,WM_WININICHANGE,0,LongInt
(PChar('RegistrySection')));
//############################################################################
end;

procedure TMainForm.FormDestroy(Sender: TObject);
var
Reg: TRegistry;
begin
// Этот кусок кода должен быть последним в данном блоке.
// Возвращаем разделитель.
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
// Проверяем какой разделитель установлен в реестре.
Reg.OpenKey('Control Panel\International',True);
// Если разделитель такой же, как при входе в прогу - то выходим.
if Reg.ReadString('sDecimal') = edtDecimal.Text then
begin
Exit;
end
else
// Если разделитель изменился, то записываем в реестр начальный разделитель.
if Reg.ReadString('sDecimal') <> edtDecimal.Text then
begin
Reg.WriteString('sDecimal', edtDecimal.Text);
Reg.CloseKey;
Reg.Free;
end;
end;
min@y™

min@y™ (статус: Доктор наук), 18 июля 2011, 08:21 [#23]:

Цитата (Яковлев):

Не мат непопрет, закину гайку:

Ну и чо дальше-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Яковлев

Яковлев (статус: Посетитель), 18 июля 2011, 08:38 [#24]:

Все.
bugmenot

bugmenot (статус: 3-ий класс), 18 июля 2011, 09:53 [#25]:

Небось эта копипаста глючит
виконання програми розпочинається з того самого мiсця, де призупинилося.

min@y™

min@y™ (статус: Доктор наук), 18 июля 2011, 10:04 [#26]:

edtDecimal.Visible := False;

Вчитался в код, пока скучно было. Охренел...
Гениальное решение - хранить символ в скрытом TEdit.
Пипец.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Яковлев

Яковлев (статус: Посетитель), 18 июля 2011, 11:48 [#27]:

Знаешь пипец смотря где. Я спецом его воткнул. Значимость действия и безопастность. Хочешь делай глобальную проблему, не за макентошем же сидишь.
min@y™

min@y™ (статус: Доктор наук), 18 июля 2011, 11:55 [#28]:

Цитата (Яковлев):

Знаешь пипец смотря где.

Ну и где?

Цитата (Яковлев):

Я спецом его воткнул.

Зачем?

Цитата (Яковлев):

Значимость действия и безопастность.

Безопасность - это интересно. Объясни, почему хранить символ в TEdit безопаснее и значимее, чем в простой переменной типа Char?

Цитата (Яковлев):

Хочешь делай глобальную проблему, не за макентошем же сидишь.

Как насчёт глобального потепления? Или парада секс-меньшинств? Глобальная проблема, ёлыпалы...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Яковлев

Яковлев (статус: Посетитель), 18 июля 2011, 13:36 [#29]:

Это бесполезный спор. Я же сбросил только болванку, а далее на свое разуменье. А про гл., так MS насоятельно рекомендует быть осторожнее с ними. Почитай А.Алексеева, толково пишет. Вообще как анализируешь код, или пока на стуле?
min@y™

min@y™ (статус: Доктор наук), 18 июля 2011, 13:52 [#30]:

Цитата (Яковлев):

Почитай А.Алексеева

Это мой сосед, чо его читать-то?

Цитата (Яковлев):

Вообще как анализируешь код, или пока на стуле?

Не понял вопроса. А стульев нету у меня, есть только табуретки (3 шт) и кресло. А зачем ты про стул-то спросил?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 18 июля 2011, 13:55 [#31]:

Цитата (min@y™):

Безопасность - это интересно. Объясни, почему хранить символ в TEdit безопаснее и значимее, чем в простой переменной типа Char?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Gooddy

Gooddy (статус: 3-ий класс), 18 июля 2011, 14:12 [#32]:

Кстати да.
Чисти код! Чисти код! Чисти код!
Яковлев

Яковлев (статус: Посетитель), 18 июля 2011, 14:13 [#33]:

Не подумай чего нибудь оскорбительное. Я же сбросил только болванку, а далее на свое разуменье. Дорабатывай как тебе угодно. Совершенству нет предела и в созидании, и в разрушении.
min@y™

min@y™ (статус: Доктор наук), 18 июля 2011, 14:22 [#34]:

Цитата (Яковлев):

Я же сбросил только болванку

А чо такое "болванка"?
а) чистый CD-R;
б) цилиндрическая заготовка для токарного станка;
ц) клон из фильма "Шестой день";
д) тупая блондинка.

Цитата (Яковлев):

Дорабатывай как тебе угодно.

Зачем мне дорабатывать чужие кривые исходники? Неужели так сложно ответить, для чего для хранения Char используется TEdit?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Яковлев

Яковлев (статус: Посетитель), 18 июля 2011, 14:27 [#35]:

Ну это не серьезно.
bugmenot

bugmenot (статус: 3-ий класс), 18 июля 2011, 14:27 [#36]:

Не безопасность, а безопастность. Две большие разницы, наш человек в Одесе подтвердит.

Алексеев - осёл, кстати.
виконання програми розпочинається з того самого мiсця, де призупинилося.

min@y™

min@y™ (статус: Доктор наук), 18 июля 2011, 14:33 [#37]:

Цитата (bugmenot):

Не безопасность, а безопастность.

Словарь открой, позорище!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 18 июля 2011, 14:34 [#38]:

Цитата (Яковлев):

Ну это не серьезно.

Не понял. Ты о чём?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Яковлев

Яковлев (статус: Посетитель), 18 июля 2011, 14:39 [#39]:

Может хватит пургу гнать.
min@y™

min@y™ (статус: Доктор наук), 18 июля 2011, 14:42 [#40]:

Цитата (Яковлев):

Может хватит пургу гнать.

Я от тебя добьюсь когда-нибудь ответа на простейший вопрос?

Цитата (min@y™):

Объясни, почему хранить символ в TEdit безопаснее и значимее, чем в простой переменной типа Char?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Страницы: [« Предыдущая] [1] [2] [3] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 25 апреля 2026, 23:16
Выполнено за 0.03 сек.