Подскащите какой функцией можно узнать какой десятичный разделитель, запятая или точка, указан в региональных настройках и используется системой. Если можно с примерчиком.
Здравствуйте, NicNici, Вы писали:
NN>Подскащите какой функцией можно узнать какой десятичный разделитель, запятая или точка, указан в региональных настройках и используется системой. Если можно с примерчиком.
Может это:
DECIMALSEPARATOR?
Здравствуйте, NicNici, Вы писали:
NN>Подскащите какой функцией можно узнать какой десятичный разделитель, запятая или точка, указан в региональных настройках и используется системой. Если можно с примерчиком.
var
c: Char;
begin
c:= GetLocaleChar(GetThreadLocale, LOCALE_SDECIMAL, '.');
***********
таким макаром у тебя ф-ция вернет разделитель, установленный в винде. а на старте программы хорошо устанавливать DecimalSeparator:= '.';
Здравствуйте, NicNici, Вы писали:
NN>Подскащите какой функцией можно узнать какой десятичный разделитель, запятая или точка, указан в региональных настройках и используется системой. Если можно с примерчиком.
---------
пишеш при создании приложения
DecimalSeparated := ','
и во всем приложениииспользуется разделитель ','
Здравствуйте, NicNici, Вы писали:
NN>Подскащите какой функцией можно узнать какой десятичный разделитель, запятая или точка, указан в региональных настройках и используется системой. Если можно с примерчиком.
Вот фрагмент из TFM:
Unit SysUtils;
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;
Delphi предоставляет информацию о текущей локали в виде переменных, а не функций. Эти переменные инициализируются при старте приложения (т.е. если поменять региональные настройки в процессе работы, то приложение этого не увидит). В принципе, можно эти настройки менять, и это повлияет на поведение функций из VCL (типа IntToStr), но я не рекомендую — часть используемого в приложении кода может обращаться не в SysUtils, а напрямую к WinAPI.
... << RSDN@Home 1.1.3 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, NicNici, Вы писали:
NN>Спасибо всем за участие и ваши ответы.
Не спеши. Это была официальная инфа.
Теперь про грабельки: пойди и в локальных настройках удали этот символ. В переводе на русский — DecimalSeparator может иметь и неприятное значение.
Здравствуйте, Аноним, Вы писали: А>Теперь про грабельки: пойди и в локальных настройках удали этот символ.
Так-таки и удали? Regional and Language Options такого изврата не позволит. Выдает ошибку, советуя, раз мы такие извращенцы, использовать символ пробела. Но это все равно символ, а не пустое место. Правда, при таких настройках строки парсить несколько сложнее
Или это только с определенной версии Windows они такие осторожные стали?
Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Здравствуйте, Sinclair, Вы писали:
S>Delphi предоставляет информацию о текущей локали в виде переменных, а не функций. Эти переменные инициализируются при старте приложения (т.е. если поменять региональные настройки в процессе работы, то приложение этого не увидит). В принципе, можно эти