|
Вопрос # 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 (статус: Посетитель), 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™ (статус: Доктор наук), 18 июля 2011, 08:21 [#23]:
Цитата (Яковлев):
Не мат непопрет, закину гайку:
Ну и чо дальше-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Яковлев (статус: Посетитель), 18 июля 2011, 08:38 [#24]:
Все.
|
|
bugmenot (статус: 3-ий класс), 18 июля 2011, 09:53 [#25]:
Небось эта копипаста глючит
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
min@y™ (статус: Доктор наук), 18 июля 2011, 10:04 [#26]:
edtDecimal.Visible := False;
Вчитался в код, пока скучно было. Охренел...
Гениальное решение - хранить символ в скрытом TEdit.
Пипец.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Яковлев (статус: Посетитель), 18 июля 2011, 11:48 [#27]:
Знаешь пипец смотря где. Я спецом его воткнул. Значимость действия и безопастность. Хочешь делай глобальную проблему, не за макентошем же сидишь.
|
|
min@y™ (статус: Доктор наук), 18 июля 2011, 11:55 [#28]:
Цитата (Яковлев):
Знаешь пипец смотря где.
Ну и где?
Цитата (Яковлев):
Я спецом его воткнул.
Зачем?
Цитата (Яковлев):
Значимость действия и безопастность.
Безопасность - это интересно. Объясни, почему хранить символ в TEdit безопаснее и значимее, чем в простой переменной типа Char?
Цитата (Яковлев):
Хочешь делай глобальную проблему, не за макентошем же сидишь.
Как насчёт глобального потепления? Или парада секс-меньшинств? Глобальная проблема, ёлыпалы...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Яковлев (статус: Посетитель), 18 июля 2011, 13:36 [#29]:
Это бесполезный спор. Я же сбросил только болванку, а далее на свое разуменье. А про гл., так MS насоятельно рекомендует быть осторожнее с ними. Почитай А.Алексеева, толково пишет. Вообще как анализируешь код, или пока на стуле?
|
|
min@y™ (статус: Доктор наук), 18 июля 2011, 13:52 [#30]:
Цитата (Яковлев):
Почитай А.Алексеева
Это мой сосед, чо его читать-то?
Цитата (Яковлев):
Вообще как анализируешь код, или пока на стуле?
Не понял вопроса. А стульев нету у меня, есть только табуретки (3 шт) и кресло. А зачем ты про стул-то спросил?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 18 июля 2011, 13:55 [#31]:
Цитата (min@y™):
Безопасность - это интересно. Объясни, почему хранить символ в TEdit безопаснее и значимее, чем в простой переменной типа Char?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Gooddy (статус: 3-ий класс), 18 июля 2011, 14:12 [#32]:
Кстати да.
Чисти код! Чисти код! Чисти код!
|
|
Яковлев (статус: Посетитель), 18 июля 2011, 14:13 [#33]:
Не подумай чего нибудь оскорбительное. Я же сбросил только болванку, а далее на свое разуменье. Дорабатывай как тебе угодно. Совершенству нет предела и в созидании, и в разрушении.
|
|
min@y™ (статус: Доктор наук), 18 июля 2011, 14:22 [#34]:
Цитата (Яковлев):
Я же сбросил только болванку
А чо такое "болванка"?
а) чистый CD-R;
б) цилиндрическая заготовка для токарного станка;
ц) клон из фильма "Шестой день";
д) тупая блондинка.
Цитата (Яковлев):
Дорабатывай как тебе угодно.
Зачем мне дорабатывать чужие кривые исходники? Неужели так сложно ответить, для чего для хранения Char используется TEdit?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Яковлев (статус: Посетитель), 18 июля 2011, 14:27 [#35]:
Ну это не серьезно.
|
|
bugmenot (статус: 3-ий класс), 18 июля 2011, 14:27 [#36]:
Не безопасность, а безопастность. Две большие разницы, наш человек в Одесе подтвердит.
Алексеев - осёл, кстати.
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
min@y™ (статус: Доктор наук), 18 июля 2011, 14:33 [#37]:
Цитата (bugmenot):
Не безопасность, а безопастность.
Словарь открой, позорище!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 18 июля 2011, 14:34 [#38]:
Цитата (Яковлев):
Ну это не серьезно.
Не понял. Ты о чём?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Яковлев (статус: Посетитель), 18 июля 2011, 14:39 [#39]:
Может хватит пургу гнать.
|
|
min@y™ (статус: Доктор наук), 18 июля 2011, 14:42 [#40]:
Цитата (Яковлев):
Может хватит пургу гнать.
Я от тебя добьюсь когда-нибудь ответа на простейший вопрос?
Цитата (min@y™):
Объясни, почему хранить символ в TEdit безопаснее и значимее, чем в простой переменной типа Char?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Страницы: [« Предыдущая] [1] [2] [3] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|