Функция GetStringTypeEx


Функция GetStringTypeEx извлекает информацию о типах символов для символов в указанной исходной строке. Для каждого символа в строке функция устанавливает один или несколько битов в соответствующем 16-разрядном элементе массива вывода данных. Каждый бит идентифицирует данные типы символов, такие как, является ли символ буквой, цифрой, или ни тем, ни другим.

В отличие от своих близких родственников - функций GetStringTypeA и GetStringTypeW, функция GetStringTypeEx применяет свое поведение по типу A или W с помощью переключателя UNICODE #define. Она - рекомендованная функция.

Синтаксис

BOOL GetStringTypeEx(      

    LCID Locale,
    DWORD dwInfoType,
    LPCTSTR lpSrcStr,
    int cchSrc,
    LPWORD lpCharType
);

Параметры

Locale

[in] Указывает идентификатор территории. Это значение уникально определяет кодовую страницу ANSI, которая используется, чтобы преобразовать строку, указанную при помощи параметра lpSrcStr из ANSI в Unicode. Функция затем анализирует каждый символ Unicode для информации о типе символа.

Обратите внимание! на то, что версия W этой функции игнорирует этот параметр.

Этот параметр может быть идентификатор территории, созданный макрокомандой MAKELCID или одним из нижеследующих предопределенных значений.

Значение

Предназначение

LOCALE_SYSTEM_DEFAULT Системный язык  по умолчанию
LOCALE_USER_DEFAULT Язык страны гипотетического пользователя
dwInfoType

[in] Определяет информацию о типе символа, которую пользователь хочет извлечь. Различные типы делятся на различные уровни (см. нижеследующий раздел статьи Замечания со списком данных, включающих в себя в каждый тип). Этот параметр может указать один из нижеследующих флажков типов символов.

Флажок

Предназначение

CT_CTYPE1 Извлекает информацию о типе символа.
CT_CTYPE2 Извлекает двунаправленную информацию разметки.
CT_CTYPE3 Извлекает информацию обработки текста.
lpSrcStr

[in] Указатель на строку для которой запрашивались типы символов. Если параметр cchSrc - любое отрицательное целое число, то строка не предполагает быть завершенной NULL - терминатором.

cchSrc

[in] Определяет размер строки, указанный при помощи параметра lpSrcStr, в символах. Это относится к байтам для функции версии ANSI или WCHARs для версии Unicode. Если этот расчет включает символ завершающего нуля, то функция возвращает информацию о типе символа за символом завершающего нуля. Если параметр cchSrc - любое отрицательное целое число, то предполагается, что строка завершается NULL- терминатором, а длина вычисляется автоматически с дополнительным символом завершения NULL. Таким образом, в этом случае, длина - _tcslen (lpSrcStr) + 1.

lpCharType

[out] Указатель на массив 16-битовых значений. Он принимает одно 16-разрядное значение для каждого символа в исходной строке. Если параметр cchSrc - не отрицательное число, то параметр lpCharType должен быть массивом типа WORD (СЛОВО) с количеством cchSrc элементов. Если параметр cchSrc - отрицательное число, то параметр lpCharType должен быть массивом типа WORD (СЛОВО) с количеством (_tcslen(lpSrcStr) + 1) элементов. Когда функция возвращает значение, то этот массив содержит одно слово соответствующее каждому символу в исходной строке.

Возвращаемое значение

Если функция завершается успешно, возвращаемое значение - не нуль.

Если функция завершается ошибкой, возвращаемое значение - нуль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError. GetLastError может возвратить один из нижеследующих кодов ошибки:

ERROR_INVALID_FLAGS

ERROR_INVALID_PARAMETER

Замечания

Предупреждение защиты  Используя функцию GetStringTypeEx неправильно вы может поставить под угрозу обеспечение безопасности Вашего приложения. Чтобы избежать переполнения буфера, установите размер буфера в параметре lpCharType правильно. Дополнительную информацию о защите данных, см. в статье Рассмотрение вопроса обеспечения безопасности: Пользовательский интерфейс Windows.

Функция GetStringTypeEx существует, чтобы обойти ограничение, ставшее причиной различия в параметрах GetStringTypeA и GetStringTypeW. Это параметрическое различие препятствует приложению автоматически активизировать правильную версию GetStringType* A или W с помощью переключателя UNICODE #define. Функция GetStringTypeEx, с этой стороны, ведет себя правильно, что касается этого переключателя. Таким образом, она - рекомендованная функция.

Обратите внимание! на то, что когда версия ANSI этой функции используется с LCID только для Unicode, вызов может завершиться успешно, потому что система использует системную кодовую страницу. Однако, символы, которые не определяются в системной кодовой странице, показываются в строке как вопросительный знак (?). Чтобы определить, какие LCID только для Unicode, см. Таблицу идентификаторов языка.

Параметр Locale используется только для того, чтобы выполнить преобразование строк в Unicode. Он не имеет никакого отношения к CTYPEs, которое возвращает функция. CTYPEs определяются исключительно точками кодирования Unicode и не изменяются на основе языка страны. Например, буквы греческого языка - C1_ALPHA для любого значения параметра Locale.

Указатели lpSrcStr и lpCharType не должны быть одинаковыми. Если они - одинаковые, функция завершается ошибкой, а GetLastError возвращает значение ERROR_INVALID_PARAMETER.

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

Поддерживаемые типы символов этой функцией, включены ниже.

Ctype 1

Эти типы поддерживаются функциями вводящими текст ANSI C и POSIX (LC_CTYPE). Комбинация этих значений возвращается в массиве, указанном при помощи параметра lpCharType, когда параметр dwInfoType устанавливается в CT_CTYPE1.

 

Имя

Значение

Предназначение

C1_UPPER 0x0001 Верхний регистр
C1_LOWER 0x0002 Нижний регистр
C1_DIGIT 0x0004 Десятичные цифры
C1_SPACE 0x0008 Пробелы
C1_PUNCT 0x0010 Пунктуация
C1_CNTRL 0x0020 Управляющие символы
C1_BLANK 0x0040 Знаки пробела
C1_XDIGIT 0x0080 Шестнадцатеричные цифры
C1_ALPHA 0x0100 Любые лингвистические символы: алфавитные, слоговая азбука или идеограмма
C1_DEFINED 0x0200 Определенный символ, но не какой-либо из других типов C1_*.

Нижеследующие типы символов являются или постоянными или вычисляемыми от основных типов и могут не поддерживаться этой функцией.

 

Тип

Описание

Буквенно-цифровой Символы алфавита и цифры (C1_ALPHA и C1_DIGIT).
Печатаемый Графические символы и пробелы (все типы C1_*, кроме C1_CNTRL).

Ctype 2

Эти типы поддерживают правильную разметку текста Unicode.  Атрибуты направления назначены так, чтобы двунаправленный алгоритм компоновки, стандартизированный Unicode, приводит к точным результатам. Эти типы являются взаимоисключающими. Для получения дополнительной информации об использование этих атрибутов, см. статью Стандарт Unicode: Международная Символьная кодировка, Тома 1 и 2, Addison Издательство Уэсли: 1991, 1992, ISBN 0201567881.

Имя

Значение

Предназначение

Strong (Сильные)    
C2_LEFTTORIGHT 0x0001 Слева направо
C2_RIGHTTOLEFT 0x0002 Справа налево
Weak(Слабые)    
C2_EUROPENUMBER 0x0003 Европейское число, европейская цифра
C2_EUROPESEPARATOR 0x0004 Европейский числовой разделитель
C2_EUROPETERMINATOR 0x0005 Европейский числовой терминатор
C2_ARABICNUMBER 0x0006 Арабское число
C2_COMMONSEPARATOR 0x0007 Обычный числовой разделитель
Neutral (Нейтральные)    
C2_BLOCKSEPARATOR 0x0008 Разделитель блока
C2_SEGMENTSEPARATOR 0x0009 Разделитель сегмента
C2_WHITESPACE 0x000A Пробел
C2_OTHERNEUTRAL 0x000B Другие нейтральные символы
Not applicable (Не применяемые)    
C2_NOTAPPLICABLE 0x0000 Не подразумевается какая-либо направленность (например, управляющие коды)
 

Ctype 3

Эти типы предназначаются, чтобы быть именами - заместителями для расширений типов POSIX, требуемым для основной обработки текста или для стандартных библиотечных функций C. Комбинация этих значений возвращается тогда, когда параметр dwInfoType устанавливается в CT_CTYPE3.

Имя

Значение

Предназначение

C3_NONSPACING 0x0001 Несамостоятельный знак.
C3_DIACRITIC 0x0002 Диакритический несамостоятельный знак.
C3_VOWELMARK 0x0004 Несамостоятельный знак гласного.
C3_SYMBOL 0x0008 Символ.
C3_KATAKANA 0x0010 Символ Katakana.
C3_HIRAGANA 0x0020 Символ Hiragana.
C3_HALFWIDTH 0x0040 Полуширинный (узкий) символ.
C3_FULLWIDTH 0x0080 Полноширинный (широкий) символ.
C3_IDEOGRAPH 0x0100 Идеографический символ.
C3_KASHIDA 0x0200 Символ арабской кашиды.
C3_LEXICAL 0x0400 Пунктуация, которая считается как часть слова (Kashida, дефис, женские/мужские порядковые индикаторы, знак равенства, и т.д).
C3_ALPHA 0x8000 Все лингвистические символы (алфавитные, слоговая азбука, и идеограммы).
Не применяемые    
C3_NOTAPPLICABLE 0x0000 Не применяется.
 

Windows 95/98/MeGetStringTypeExW поддерживается программой Microsoft Layer for Unicode (MSLU). Чтобы использовать ее, Вы должны добавить некоторые файлы к вашему приложению, как изложено в описании Microsoft Layer for Unicode для системы Windows 95/98/Me.

Смотри также

Обзор Строки, Функции, используемые строками, GetLocaleInfo, GetStringTypeA, GetStringTypeW

Размещение и совместимость GetStringTypeEx

К Windows XP Да
л Windows 2000 Professional Да
и Windows NT Workstation Да версии 3.1
е Windows Me Да
н Windows 98 Да
т Windows 95 Да
С Windows Server 2003 Да
е Windows 2000 Server Да
р Windows NT Server Да версии 3.1
в
е
р
Используемая библиотека Kernel32.lib
Используемая DLL kernel32.dll
Заголовочный файл
- объявлено в Winnls.h
- включено в Windows.h
Unicode Реализуются как версии Unicode и ANSI.
Замечания по платформе Не имеется

Назад в оглавление
На главную страницу
В оглавление справки

Hosted by uCoz