Access 2002

Используйте IsCharAlphaNumeric вместо ASCII-значений


Программисту часто приходится проверять, является ли некоторый символ буквенно-цифровым (то есть входит ли он в диапазон A-Z, a-z, A-Я, а-я, 0-9). Стандартный способ этой проверки — сравнение результатов вызова функции Asc(UCa- 5е(символ)) с ANSI-значениями границ этих диапазонов. Однако в Windows API есть гораздо более удобная функция, которая прямо решает нашу задачу — Is- CharAlphaNumenc. Кроме того, можно воспользоваться еще одной похожей функцией Windows API, IsCharAlpha, определяющей, является ли символ с переданным ей кодом буквой. Дополнительным преимуществом функций Windows API является то, что они интернационализированы. Ведь если вам нужно, чтобы программа работала с текстом, написанным на разных языках, недостаточно сравнить код буквы с границами определенных диапазонов: вы рискуете пропустить те буквы, которые в эти диапазоны не входят. И наконец, функции Windows API работают быстрее функции сравнения кодов.

Более медленный код проверки букв латиницы и цифр может выглядеть так:

Сравнивайте строки с помощью StrComp, не преобразуя их к верхнему регистру с помощью UCase

VBA сравнивает строки с учетом опции Option Compare, имеющейся в начале каждого модуля. По умолчанию VBA использует опцию Option Compare Binary, при которой результаты сравнения зависят от регистра символов. Если же вам нужно, чтобы результат сравнения строк не зависел от регистра, придется выполнить несколько дополнительных действий.

Простейшее решение заключается в преобразовании обеих сравниваемых строк к верхнему регистру с помощью функции UCase. Альтернативой ей является функция StrComp.

Комментарии закрыты