явно указано условие проверки)
к. в выражении nCount > 0 явно указано условие проверки) и, во-вторых, функция утверждения должным образом реагирует на все "неправильные" (<= 0) значения параметра nCount.
Когда функция UpdateListEntries получает в качестве параметра неположительное значение, то функция-утверждение Debug.Assert обнаруживает этот факт при оценке выражения nCount > 0 и выводит на экран панель сообщений ASSERTION FAILURE. — Пер.
В языках С и C++ имеются специальные проверочные функции, приведенные в табл. 3.1 и помогающие создавать достаточно описательные утверждения. Эти функции можно вызывать и из программ на Visual Basic, но делать этого не нужно из-за проблем с указателями.
Таблица 3.1. Вспомогательные функции для создания описательных утверждений в C/C++
Функция
|
Описание
|
GetOb j ectType
|
Функция подсистемы интерфейса графических устройств (GDI), которая возвращает тип GDI дескриптора
|
IsBadCodePtr
|
Проверяет правильность указателя памяти
|
IsBadReadPtr
|
Проверяет, может ли указатель памяти читать указанное число байт
|
IsBadStringPt
|
Проверяет, может ли строчный указатель читать символы до NULL-терминатора (или указанное максимальное число символов)
|
IsBadWritePtr
|
Проверяет, может ли указатель памяти записывать указанное число байтов
|
IsWindow
|
Проверяет, является ли HWND-параметр правильным окном
|
Функции IsBadstringPtr и IsBadWritePtr не относятся к категории потокобезопасных функций. Пока один поток вызывает функцию IsBadWritePtr, чтобы проверить права доступа на участок памяти, другой поток может эти права изменить. Если вы используете любую из этих функций только для того, чтобы проверить обычную для языка С область динамически распределяемой памяти, то не должно возникать никаких проблем. Однако если ваше приложение обновляет страничные права доступа и выполняет другие продвинутые манипуляции с памятью, то вы должны обеспечить свои собственные потокобезопасные версии функций IsBadstringPtr
и IsBadWritePtr.
Visual Basic имеет свой набор функций, помогающих проверять достоверность специфических условий Visual Basic. Все эти функции перечислены в табл 3.2. Если разработчик, следуя общепринятой практике программирования на языке Visual Basic, не использует спецификатор variants и явно определяет спецификаторы ByVal и ByRef для параметров, то ему нет необходимости так часто проверять достоверность типов переменных. Если же вы не придерживаетесь подобной практики, то, по крайней мере, получаете некоторый набор хороших средств для выполнения такой проверки.
Таблица 3.2. Справочные функции для описательных утверждений Visual Basic
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий
|