Содержание материала

 

Для этого вам придется создать два идентичных .rc-файла, один для 16-битной версии, второй для

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

файл с именем STRTBL16.rc, а другой с именем STRTBL32.rc. Скомпилируйте файл STRTBL16.rc с помощью

16-битного компилятора BRCC.exe (расположен в каталоге BIN Delphi 1) и файл STRTBL32.rc с помощью

BRCC32.exe (расположен в той же директории 32-битной версии Delphi).

 

Во время работы приложения мы выясняем язык операционной системы, установленный по умолчанию.

Метод получения такой информации отличается для 16- и 32-битной версии Windows. Чтобы сделать код

более читабельным, мы позаимствовали "языковые" константы из файла Windows.pas, применяемого в

32-битной версии Delphi.

Code:

{$IFDEF WIN32}

{$R STRTBL32.RES}

{$ELSE}

{$R STRTBL16.RES}

const LANG_ENGLISH = $09;

const LANG_SPANISH = $0a;

const LANG_SWEDISH = $1d;

{$ENDIF}

 

 

function GetLanguage : word;

{$IFDEF WIN32}

{$ELSE}

 

var

   s : string;

   i : integer;

{$ENDIF}

begin

{$IFDEF WIN32}

GetLanguage := GetUserDefaultLangID and $3ff;

{$ELSE}

 

s[0] := Char(GetProfileString('intl', 'sLanguage', 'none', @s[1], sizeof(s)-2));

for i := 1 to length(s) do

   s[i] := UpCase(s[i]);

if s = 'ENU' then GetLanguage := LANG_ENGLISH else

if s = 'ESN' then GetLanguage := LANG_SPANISH else

if s = 'SVE' then GetLanguage := LANG_SWEDISH else

   GetLanguage := LANG_ENGLISH;

{$ENDIF}

end;

 

procedure TForm1.FormCreate(Sender: TObject);

var

a : array[0..255] of char;

StrTblOfs : integer;

begin

{Получаем текущий язык системы и начало соответствующих строк в таблице}

case GetLanguage of

   LANG_ENGLISH : StrTblOfs := 0;

   LANG_SPANISH : StrTblOfs := 16;

   LANG_SWEDISH : StrTblOfs := 32;

else

   StrTblOfs := 0;

end;

 

{Загружаем и устанавливаем заголовок кнопки "Yes" в соответствии с языком}

if LoadString(hInstance, StrTblOfs + 1, @a, sizeof(a)) <> 0 then

   Button1.Caption := StrPas(a);

 

{Загружаем и устанавливаем заголовок кнопки "No" в соответствии с языком}

if LoadString(hInstance, StrTblOfs + 2, @a, sizeof(a)) <> 0 then

   Button2.Caption := StrPas(a);

end;

 

Взято из Советов по Delphi от   Валентина Озерова Сборник Kuliba

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить