Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.24;
Скачать: CL | DM;

Вниз

Как получить русское название кодировки. mlang?   Найти похожие ветки 

 
StriderMan   (2008-11-18 18:16) [0]

Есть номера кодировок, требуется получить для каждой нормальное название как в настройках "Язык и региональные стандарты".

Копал MSDN в сторону IMultiLanguage, но так и не понял как малой кровью выцепить функции этого интерфейса в Делфях. по просторам инета бродят разные заголовочные файлы, но ради одной функции цеплять к проекту пару модулей по несколько КБ не готов. Подскажите, может есть еще какой легкий способ?

Пытался импортировать IMultiLanguage как ActiveX-контрол - не нашел его в списке. DLL-ка напрямую не импортируется, ошибок не выдает.

В идеале надо что-то типа

var
 ml: olevariant;
...
ml := CreateOleObject("че-то типа MultiLanguage");
ml.GetCodePageInfo ....

помогите плиз


 
Eraser ©   (2008-11-18 22:00) [1]

> Есть номера кодировок, требуется получить для каждой нормальное
> название как в настройках "Язык и региональные стандарты".

вот это уточните, не понятно что требуется. в "Язык и региональные стандарты" туева куча настроек и параметров.

скорее всего тут можно обойтись без всяких ActiveX, стандартными функциями.


 
StriderMan   (2008-11-19 10:28) [2]

Панель управления/Язык и региональные стандарты/Дополнительно

например есть у меня список кодировок:
866, 855, 857

надо получить расширенный список типа

866 - (OEM русская)
855 - (OEM - кириллица традиционная)
857 - (OEM - турецкая)


 
clickmaker ©   (2008-11-19 11:19) [3]

EnumSystemCodePages
GetCPInfoEx


 
StriderMan   (2008-11-19 12:56) [4]


> GetCPInfoEx

видимо то что нужно, но почему-то на любую таблицу ругается "Неверный параметр"

type
 TCPInfoEx = record
   MaxCharSize: UINT;
   DefaultChar: array [0..MAX_DEFAULTCHAR - 1] of byte;
   LeadByte: array[0..MAX_LEADBYTES - 1] of byte;
   UnicodeDefaultChar: Char;
   CodePage: UINT;
   CodePageName: array[0..MAX_PATH - 1] of Char;
 end;

function GetCPInfoEx(CodePage: UINT; Flags: DWord; var CPInfo: TCPInfoEx): boolean; external "kernel32.dll" name "GetCPInfoExA";

procedure TForm1.Button1Click(Sender: TObject);
var
 cpiex: TCPInfoEx;
begin
 if not GetCPInfoEx(866, 0, cpiex) then
   RaiseLastOSError;

 ShowMessage(cpiex.CodePageName);
end;


 
clickmaker ©   (2008-11-19 13:01) [5]

попробуй packed record и stdcall у функции


 
StriderMan   (2008-11-19 13:09) [6]


> stdcall у функции

Ну точно, как я забыл!! работает, большое спасибо!



Страницы: 1 вся ветка

Текущий архив: 2010.01.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
1-1228253040
asail
2008-12-03 00:24
2010.01.24
Не рабтает смена лотка в QuickReport


2-1259642001
Андрей Смирнов
2009-12-01 07:33
2010.01.24
Прокси сервер и как это делают Веб-браузеры?


1-1233591166
Wadimka
2009-02-02 19:12
2010.01.24
Как защитить свою прогу? вернее, через сервер


2-1259911372
kate158
2009-12-04 10:22
2010.01.24
отображение в поле monthcalendar только месяца и года


15-1258146808
POOP
2009-11-14 00:13
2010.01.24
Редакторы кода в несколько колонок.