Как получить список поддерживаемых кодировок
Сегодняшний небольшой пример кода - получение списка всех поддерживаемых кодировок в системе. Примерно такой список можно увидеть в меню сохранения в текстовых редакторах или в браузерах, когда надо выбрать кодировку страницы. Если ваше приложение умеет работать с разными кодировками, то значит должно уметь и получать их список.Начинаем с констант и структуры, которые отсутствуют в FASM.
Code (Assembler) : Убрать нумерацию
- CP_SUPPORTED = 0x00000002
- MAX_LEADBYTES = 12
- MAX_DEFAULTCHAR = 2
- struct CPINFOEX
- MaxCharSize dd ?
- DefaultChar rb MAX_DEFAULTCHAR
- LeadByte rb MAX_LEADBYTES
- UnicodeDefaultChar dw ?
- CodePage dd ?
- CodePageName rb MAX_PATH
- ends
Code (Assembler) : Убрать нумерацию
- ; Получить список поддерживаемых кодировок
- invoke EnumSystemCodePages,CodePageEnumProc,CP_SUPPORTED
Что интересно, идентификатор представляет собой число, но передается в обработчик в виде строки. Поэтому дополнительно приходится преобразовывать строку в число. После этого можно вызвать функцию GetCPInfoEx с числовым идентификатором кодировки, которая при успешном выполнении вернет заполненную структуру CPINFOEX.
Code (Assembler) : Убрать нумерацию
- proc CodePageEnumProc lpCP:DWORD
- pusha
- ; Строку в число
- stdcall str2dec,[lpCP]
- ; Получить информацию о кодировке
- invoke GetCPInfoEx,eax,0,cpinfo
- ; cpinfo - заполненная структура CPINFOEX
- ; cpinfo.CodePageName - наименование кодировки
- popa
- mov eax,TRUE
- ret
- endp
В приложении пример программы с исходным текстом, которая выводит список поддерживаемых кодировок в системе.
Просмотров: 447 | Комментариев: 0
Метки: Assembler
Комментарии
Отзывы посетителей сайта о статье
Комментариeв нет
Добавить комментарий
Заполните форму для добавления комментария