Access 2002

Набор числовых кодов


Если данные представляют собой не текст, а набор числовых кодов, передавайте их в виде массива байтов (иначе функция получит совсем не те байты, которые вы передали). Именно для этого в VBA существует тип данных Byte.

О Всегда вызывайте только функции, ожидающие получить строки ANSI. У каждой функции Win32, получающей строковые данные, есть две версии. Название той из них, которая получает строки ANSI, оканчивается буквой «А». Вторая функция получает строки Unicode, и ее название оканчивается буквой «W». Из VBA нужно вызывать только ANSI-версии функций (с буквой <А»), (Конечно, вы можете вызвать и Unicode-вереию функции, но она получит не ту строку, которую вы ей передадите.) Обычно в операторе Declare для DLL-функции, имеющей две версии, определяют псевдоним, отсекая от ее имени букву «А» или W>. Например, к функции GetWindowTextA обращаются по имени GetWindowText.

О VBA преобразовывает в формат ANSI не только строки, передаваемые непосредственно через строковые аргументы, но и строки, которые входят в состав пользовательских типов данных.

Если при попытке вызова DLL-функции вы получите сообщение «Cannot find DLL entry point ИмяФунк- ции in Имя01±», проверьте, есть ли у нее строковые аргументы. Если да, то, скорее всего, вы забыли задать в предложении Alias ANSI-версию функции и обращаетесь к ней по усеченному имени.

Некоторые функции Windows API имеют аргументы, тип которых зависит от того, для чего вы вызвали функцию. Например, на языке программирования С функция Wi nHel р объявлена следующим образом:

Первые два аргумента функции — это дескриптор родительского окна и имя Help-файла. Аргумент uCommand указывает, что Windows должна сделать с этим файлом. А вот способ использования аргумента dwData зависит от того, какую константу вы передали в аргументе uCommand. Два возможных значения параметра uCommand описаны в следующей таблице.

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