Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.005 c
1-1233591166
Wadimka
2009-02-02 19:12
2010.01.24
Как защитить свою прогу? вернее, через сервер


4-1227466318
demon
2008-11-23 21:51
2010.01.24
Положение рабочей части окна на экране


8-1202567132
multiflex
2008-02-09 17:25
2010.01.24
"Низкоуровневое" воспроизведение


3-1233671912
Pavel
2009-02-03 17:38
2010.01.24
Компонент SQLStoredProc


2-1251710046
Zalm
2009-08-31 13:14
2010.01.24
TIdCmdTCPServer




   Наверх