Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определение правильного Charset [D5, Win95/98, Win2k, WinXP]


Andrey Fomin ©   (2002-07-18 10:44:00) 

Как можно определить какой Charset задавать шрифту для корректного отображения текста? Необходимо сделать, чтобы программа на основе установок Windows определяла какой charset использовать. Как это можно сделать?


Andrey Fomin   (2002-07-19 11:42:00) [1]

Спасибо!


Dimka Maslov   (2002-07-18 13:15:00) [2]

LangID - индентификатор языка (0419 для русского), определить его можно с помощью функций
GetSystemDefaultLangId
GetUserDefaultLangId
GetThreadLocale


function LangIDToCharset(LangID: Integer): Byte;

type
TLangIDItem = packed record
LangID: Byte;
Charset: Byte;
end;

LangCount = 33;
LangIDToCharsetInfo : array [0..LangCount] of TLangIDItem = (
(LangID: $01; Charset: ARABIC_CHARSET),
(LangID: $02; Charset: RUSSIAN_CHARSET),
(LangID: $04; Charset: CHINESEBIG5_CHARSET),
(LangID: $05; Charset: EASTEUROPE_CHARSET),
(LangID: $06; Charset: ANSI_CHARSET),
(LangID: $07; Charset: ANSI_CHARSET),
(LangID: $08; Charset: GREEK_CHARSET),
(LangID: $09; Charset: ANSI_CHARSET),
(LangID: $0A; Charset: ANSI_CHARSET),
(LangID: $0B; Charset: ANSI_CHARSET),
(LangID: $0C; Charset: ANSI_CHARSET),
(LangID: $0D; Charset: HEBREW_CHARSET),
(LangID: $0E; Charset: EASTEUROPE_CHARSET),
(LangID: $0F; Charset: ANSI_CHARSET),
(LangID: $10; Charset: ANSI_CHARSET),
(LangID: $13; Charset: ANSI_CHARSET),
(LangID: $14; Charset: ANSI_CHARSET),
(LangID: $15; Charset: EASTEUROPE_CHARSET),
(LangID: $16; Charset: ANSI_CHARSET),
(LangID: $18; Charset: EASTEUROPE_CHARSET),
(LangID: $19; Charset: RUSSIAN_CHARSET),
(LangID: $1A; Charset: EASTEUROPE_CHARSET),
(LangID: $1B; Charset: EASTEUROPE_CHARSET),
(LangID: $1C; Charset: EASTEUROPE_CHARSET),
(LangID: $1D; Charset: ANSI_CHARSET),
(LangID: $1E; Charset: THAI_CHARSET),
(LangID: $1F; Charset: TURKISH_CHARSET),
(LangID: $22; Charset: RUSSIAN_CHARSET),
(LangID: $23; Charset: RUSSIAN_CHARSET),
(LangID: $24; Charset: EASTEUROPE_CHARSET),
(LangID: $25; Charset: BALTIC_CHARSET),
(LangID: $26; Charset: BALTIC_CHARSET),
(LangID: $27; Charset: BALTIC_CHARSET),
(LangID: $2a; Charset: VIETNAMESE_CHARSET));

var I: byte;
begin
Result:=DEFAULT_CHARSET;
if LangID = 0 then LangID:=_GetLocale;
for i:=0 to LangCount do if Lo(LangID) = LangIDToCharsetInfo[i].LangID then begin
Result:=LangIDToCharsetInfo[i].Charset;
Break;
end;
if LangID = $0C1A then Result:=RUSSIAN_CHARSET;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо