| 
| 
 | Вопрос # 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] [Следующая »]  
|   | Яковлев (статус: Посетитель), 15 июля 2011, 15:28 [#1]:Извеняюсь, забыл сообщить версию делфи. У меня 2009 и ХЕ. DecimalSeparator := '.'; для старых версий делфи.Тут надо скорей всего использовать ресурсы винды, но как? |  
|   | min@y™ (статус: Доктор наук), 15 июля 2011, 15:40 [#2]: Цитата (Яковлев): DecimalSeparator := '.'; для старых версий делфи. Откуда такая информация?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Яковлев (статус: Посетитель), 15 июля 2011, 16:03 [#3]:Где то в дебрях встечал, но у меня не работает это. |  
|   | Вадим К (статус: Академик), 15 июля 2011, 16:13 [#4]:лучше это прием не использовать, если только нет особой необходимости. И DecimalSeparator := '.';  меняет только для самой программы (и всех, которые она запустит), все остальные остаются с своими разделителями. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | min@y™ (статус: Доктор наук), 15 июля 2011, 16:35 [#5]: Цитата (Вадим К): лучше это прием не использовать, если только нет особой необходимости Естественно. Чел настраивает всю винду под себя, а тут какая-то, понимаешь, прога-выскочка требует вводить данные так, как она хочет. Я б удалил её нах.
 
 Цитата (Вадим К): И DecimalSeparator := '.'; меняет только для самой программы (и всех, которые она запустит) Абсолютно верно. Однако таков был и вопрос:
 
 Цитата (Яковлев): Цель одна, чтобы при работе с программой разделитель был точкой, а при выходе из программы разделитель - запятая. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 15 июля 2011, 16:40 [#6]: Цитата (Яковлев): Где то в дебрях встечал, но у меня не работает это.  Погуглил, не нашёл такого. Пруф давай, иначе не верю.
 
 Чо не работает-то? Вот такая хрень работать будет?
 
 var
  X: Double;
begin
  DecimalSeparator:= '.';
  try
    X:= StrToFloat('100.500');
    ShowMessage('Работает');
  except
    ShowMessage('Не работает');
  end;
end;Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Вадим К (статус: Академик), 15 июля 2011, 17:06 [#7]:в вопросе есть ещё одно слово "Как правильно програмно изменить региональные настройки Win7 и XP" Хотя по разному можно это трактовать.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | min@y™ (статус: Доктор наук), 15 июля 2011, 17:15 [#8]: Цитата (Вадим К): Хотя по разному можно это трактовать.  Я таких вопросов за 11 лет начитался 100500 штук. И 99% сводились к тому, чтобы StrToFloat() работала с точкой.
 
 Хотя, я знаю, как изменить региональные настройки. Для текущего юзера и для всех сразу, если из-под админского аккаунта. Однако, аффтар хочет чтобы они менялись по запуску проги и восстанавливались по выходу. Это подозрительно. Нахрена для всей системы? А если прога упадёт, то настройки не восстановятся.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Gooddy (статус: 3-ий класс), 15 июля 2011, 20:00 [#9]:Яковлев: необходимо, чтобы другие программы тоже считали разделитель точкой, или чтобы считала разделитель точкой написанная программа? Чисти код! Чисти код! Чисти код! |  
|   | Яковлев (статус: Посетитель), 16 июля 2011, 03:27 [#10]:Вадим К очень верно обратил внимание на поставленный вопрос. Трактовка у меня одна. Среда делфии и среда винды. Как правильно програмно изменить точку на запятую при входе и выходе в ОС. Эфект должен быть такой же, если бы я вручную сам бы изменил в настройках винды и установил разделитель точку. Естественно, вопрос идет о работе только с запущенной /написанной/ прогой, другие, у других свои параметры. |  
|   | bugmenot (статус: 3-ий класс), 16 июля 2011, 04:32 [#11]:по-моему, надо аспирину выпить, может само пройдёт... виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Gooddy (статус: 3-ий класс), 16 июля 2011, 10:04 [#12]: Цитата:  ...Как правильно програмно изменить точку на запятую при входе и выходе в ОС... 
 Цитата: Естественно, вопрос идет о работе только с запущенной /написанной/ прогой, другие, у других свои параметры. *facepalm*
 Чисти код! Чисти код! Чисти код! |  
|   | Gooddy (статус: 3-ий класс), 16 июля 2011, 10:05 [#13]:В каких конкретно местах приложения у тебя используются вещественные числа? Чисти код! Чисти код! Чисти код! |  
|   | min@y™ (статус: Доктор наук), 16 июля 2011, 10:08 [#14]: Цитата (Яковлев): Вадим К очень верно обратил внимание на поставленный вопрос. Трактовка у меня одна. Среда делфии и среда винды. Как правильно програмно изменить точку на запятую при входе и выходе в ОС. Эфект должен быть такой же, если бы я вручную сам бы изменил в настройках винды и установил разделитель точку. Естественно, вопрос идет о работе только с запущенной /написанной/ прогой, другие, у других свои параметры.  Ну дык на мой вопрос ответь, я долго ждать-то буду? См. пост #6.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Gooddy (статус: 3-ий класс), 16 июля 2011, 10:17 [#15]:min@y™: я подозреваю, что проблема в том, что запятые где-нибудь в TDBGird'е Чисти код! Чисти код! Чисти код! |  
|   | Gooddy (статус: 3-ий класс), 16 июля 2011, 10:29 [#16]:Короче. Т.к. никаких данных по вопросу не поступило, вариант один: Везде где у тебя может быть запятая делаешь такую шнягу:
 
 str := StringReplace( str, ',', '.', [rfReplaceAll]);
 
 Но это жопный метод и применять его следует только к строкам хранящим цифры.
 Чисти код! Чисти код! Чисти код! |  
|   | min@y™ (статус: Доктор наук), 16 июля 2011, 10:31 [#17]:Ждём ответа аффтара. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Яковлев (статус: Посетитель), 16 июля 2011, 11:48 [#18]:Все ответы работают, но не это я хотел услышать. Читайте вопрос. Вадим К рекомендует "лучше это прием не использовать, если только нет особой необходимости."
 |  
|   | min@y™ (статус: Доктор наук), 16 июля 2011, 11:57 [#19]: Цитата (Яковлев): Все ответы работают, но не это я хотел услышать. Читайте вопрос. Вадим К рекомендует "лучше это прием не использовать, если только нет особой необходимости."  И чо? // пацанский вопрос
 Чо ж тебе надо-то? Определись уже.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Gooddy (статус: 3-ий класс), 16 июля 2011, 19:30 [#20]:Яковлев: щас мат попрёт! 
 Если ты хочешь, чтобы изменения касались твоей программы, НЕ ТРОГАЙ РЕГИОНАЛЬНЫЕ НАСТРОЙКИ!!!
 
 Если ты хочешь трогать региональные настройки учти - ОНИ КАСАЮТСЯ ВСЕХ ПРИЛОЖЕНИЙ!!!
 
 Под региональными настройками подразумеваю таковые настройки ОС.
 Чисти код! Чисти код! Чисти код! |  Страницы: [1] [2] [3] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |