Access 2002

Модификация передаваемых переменных


Аккуратно используйте передачу параметров по значению

Будьте осторожны с передачей в подпрограммы параметров по значению. Хотя это хороший способ предотвратить модификацию передаваемых переменных (так как при передаче по значению создаются их копии), при вызове процедуры можно потерять информацию. Дело в том, что получаемые процедурой данные преобразуются к типам данных ее параметров. Если, к примеру, переменная типа Single передается через параметр типа Integer, то целая часть данных преобразуется в Integer, а дробная часть просто обрезается. Однако сообщение об зтом не выдается. Поэтому, если в объявлении процедуры вы указали, что передача будет выполняться по значению, при ее вызове вы должны точно помиить типы данных ее параметров.

Даже такой простой оператор, как Dim, может привести к логической ошибке в программе. Рассмотрим следующий оператор:

Цель здесь, вроде бы, ясна: определить две переменные типа String. Если вы программировали на языке С или C++, то знаете, что подобное объявление именно это и сделает. Однако в VBA указанный оператор работает по-иному. Предложение As применяется только к переменной, за которой непосредственно следует, а не ко всем переменным в строке. В результате данного объявления переменная strLast будет иметь тип данных String, а переменная strFirst — тип Variant и, следовательно, использовать ее необходимо по-другому. При инициализации переменная strFi rst получит значение Empty, а переменной strLast будет присвоена строка нулевой длины. В VBA необходимо явно определять тип данных каждой переменной. Лучше всего взять себе за привычку объявлять в каждом операторе Dim только одну переменную.

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