Delphi World - Как получить информацию о локальных настройках системы
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Как получить информацию о локальных настройках системы

Юзер: - Поставь-ка новые драйверы видеокарточки.
Windows: - А диск есть?
Юзер: - Есть.
Windows: - А что сказать надо?
Юзер: - Ok".
Windows: - Фиг тебе, а не Ok". Не могу найти необходимые файлы!
Юзер: - Так вот же они!
Windows: - Где?!
Юзер: - Да на диске!
Windows: - На каком?
Юзер: - На B:\.
Windows: - Нет такого диска.
Юзер: - А почему под DOS"ом есть?!
Windows: - Не мои проблемы.
Юзер: - А как же мне драйверы поставить?
Windows: - А зачем тебе драйверы? У тебя видеокарточки-то нет.
Юзер: - Не может быть!
Windows: - Точно тебе говорю.
Юзер: - А аудио есть?
Windows: - И аудио нет.
Юзер: - А что есть?
Windows: - Джойстик есть.
Юзер: - Отродясь не было...
Windows: - Мне виднее.
Юзер: - Надо же, а я его покупать собрался.
Windows: - Вот видишь! Что бы ты без меня делал?

Delphi имеет функцию GetLocaleInfo, которая позволяет получать различную информацию о локальных настройках, таких как системный язык, символ валюты, количество десятичных знаков и т.д.

Далее приведена функция, которая возвращает значение в зависимости от параметра "flag":


function TForm1.GetLocaleInformation(Flag: Integer): string;
var
  pcLCA: array [0..20] of Char;
begin
  if GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, Flag, pcLCA, 19) <= 0 then
    pcLCA[0] := #0;
  Result := pcLCA;
end;

Пример использования функции:


procedure TForm1.Button1Click(Sender: TObject);
begin 
  ShowMessage(GetLocaleInformation(LOCALE_SENGLANGUAGE));
end;

"Flag" может содержать следующее значение (если посмотреть в Windows.pas):


LOCALE_NOUSEROVERRIDE { do not use user overrides }
LOCALE_USE_CP_ACP { use the system ACP }
LOCALE_ILANGUAGE { language id }
LOCALE_SLANGUAGE { localized name of language }
LOCALE_SENGLANGUAGE { English name of language }
LOCALE_SABBREVLANGNAME { abbreviated language name }
LOCALE_SNATIVELANGNAME { native name of language }
LOCALE_ICOUNTRY { country code } 
LOCALE_SCOUNTRY { localized name of country } 
LOCALE_SENGCOUNTRY { English name of country } 
LOCALE_SABBREVCTRYNAME { abbreviated country name } 
LOCALE_SNATIVECTRYNAME { native name of country } 
LOCALE_IDEFAULTLANGUAGE { default language id } 
LOCALE_IDEFAULTCOUNTRY { default country code } 
LOCALE_IDEFAULTCODEPAGE { default oem code page } 
LOCALE_IDEFAULTANSICODEPAGE { default ansi code page } 
LOCALE_IDEFAULTMACCODEPAGE { default mac code page } 
LOCALE_SLIST { list item separator } 
LOCALE_IMEASURE { 0 = metric, 1 = US } 
LOCALE_SDECIMAL { decimal separator } 
LOCALE_STHOUSAND { thousand separator } 
LOCALE_SGROUPING { digit grouping } 
LOCALE_IDIGITS { number of fractional digits } 
LOCALE_ILZERO { leading zeros for decimal } 
LOCALE_INEGNUMBER { negative number mode } 
LOCALE_SNATIVEDIGITS { native ascii 0-9 } 
LOCALE_SCURRENCY { local monetary symbol } 
LOCALE_SINTLSYMBOL { intl monetary symbol } 
LOCALE_SMONDECIMALSEP { monetary decimal separator } 
LOCALE_SMONTHOUSANDSEP { monetary thousand separator } 
LOCALE_SMONGROUPING { monetary grouping } 
LOCALE_ICURRDIGITS { # local monetary digits } 
LOCALE_IINTLCURRDIGITS { # intl monetary digits } 
LOCALE_ICURRENCY { positive currency mode } 
LOCALE_INEGCURR { negative currency mode } 
LOCALE_SDATE { date separator }
LOCALE_STIME { time separator } 
LOCALE_SSHORTDATE { short date format string } 
LOCALE_SLONGDATE { long date format string } 
LOCALE_STIMEFORMAT { time format string } 
LOCALE_IDATE { short date format ordering } 
LOCALE_ILDATE { long date format ordering } 
LOCALE_ITIME { time format specifier } 
LOCALE_ITIMEMARKPOSN { time marker position } 
LOCALE_ICENTURY { century format specifier (short date) } 
LOCALE_ITLZERO { leading zeros in time field } 
LOCALE_IDAYLZERO { leading zeros in day field (short date) } 
LOCALE_IMONLZERO { leading zeros in month field (short date) } 
LOCALE_S1159 { AM designator } 
LOCALE_S2359 { PM designator } 
LOCALE_ICALENDARTYPE { type of calendar specifier } 
LOCALE_IOPTIONALCALENDAR { additional calendar types specifier } 
LOCALE_IFIRSTDAYOFWEEK { first day of week specifier } 
LOCALE_IFIRSTWEEKOFYEAR { first week of year specifier } 
LOCALE_SDAYNAME1 { long name for Monday } 
LOCALE_SDAYNAME2 { long name for Tuesday } 
LOCALE_SDAYNAME3 { long name for Wednesday } 
LOCALE_SDAYNAME4 { long name for Thursday } 
LOCALE_SDAYNAME5 { long name for Friday } 
LOCALE_SDAYNAME6 { long name for Saturday } 
LOCALE_SDAYNAME7 { long name for Sunday } 
LOCALE_SABBREVDAYNAME1 { abbreviated name for Monday } 
LOCALE_SABBREVDAYNAME2 { abbreviated name for Tuesday } 
LOCALE_SABBREVDAYNAME3 { abbreviated name for Wednesday } 
LOCALE_SABBREVDAYNAME4 { abbreviated name for Thursday } 
LOCALE_SABBREVDAYNAME5 { abbreviated name for Friday } 
LOCALE_SABBREVDAYNAME6 { abbreviated name for Saturday }
LOCALE_SABBREVDAYNAME7 { abbreviated name for Sunday } 
LOCALE_SMONTHNAME1 { long name for January } 
LOCALE_SMONTHNAME2 { long name for February } 
LOCALE_SMONTHNAME3 { long name for March } 
LOCALE_SMONTHNAME4 { long name for April } 
LOCALE_SMONTHNAME5 { long name for May } 
LOCALE_SMONTHNAME6 { long name for June } 
LOCALE_SMONTHNAME7 { long name for July } 
LOCALE_SMONTHNAME8 { long name for August } 
LOCALE_SMONTHNAME9 { long name for September } 
LOCALE_SMONTHNAME10 { long name for October } 
LOCALE_SMONTHNAME11 { long name for November } 
LOCALE_SMONTHNAME12 { long name for December } 
LOCALE_SMONTHNAME13 { long name for 13th month (if exists) } 
LOCALE_SABBREVMONTHNAME1 { abbreviated name for January } 
LOCALE_SABBREVMONTHNAME2 { abbreviated name for February } 
LOCALE_SABBREVMONTHNAME3 { abbreviated name for March } 
LOCALE_SABBREVMONTHNAME4 { abbreviated name for April } 
LOCALE_SABBREVMONTHNAME5 { abbreviated name for May } 
LOCALE_SABBREVMONTHNAME6 { abbreviated name for June } 
LOCALE_SABBREVMONTHNAME7 { abbreviated name for July } 
LOCALE_SABBREVMONTHNAME8 { abbreviated name for August } 
LOCALE_SABBREVMONTHNAME9 { abbreviated name for September } 
LOCALE_SABBREVMONTHNAME10 { abbreviated name for October } 
LOCALE_SABBREVMONTHNAME11 { abbreviated name for November } 
LOCALE_SABBREVMONTHNAME12 { abbreviated name for December } 
LOCALE_SABBREVMONTHNAME13 { abbreviated name for 13th month (if exists) } 
LOCALE_SPOSITIVESIGN { positive sign } 
LOCALE_SNEGATIVESIGN { negative sign } 
LOCALE_IPOSSIGNPOSN { positive sign position } 
LOCALE_INEGSIGNPOSN { negative sign position }
LOCALE_IPOSSYMPRECEDES { mon sym precedes pos amt } 
LOCALE_IPOSSEPBYSPACE { mon sym sep by space from pos amt } 
LOCALE_INEGSYMPRECEDES { mon sym precedes neg amt } 
LOCALE_INEGSEPBYSPACE { mon sym sep by space from neg amt } 
LOCALE_FONTSIGNATURE { font signature } 
LOCALE_SISO639LANGNAME { ISO abbreviated language name } 
LOCALE_SISO3166CTRYNAME { ISO abbreviated country name }

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования