Один проект может содержать до 32 000 идентификаторов (незарезервированных слов), включая (но не ограничиваясь) формы, элементы управления, модули, переменные, константы, процедуры, функции и объекты. Обратите внимание, что фактическое количество идентификаторов ограничено доступной памятью.
Имена переменных в Visual Basic не могут превышать 255 символов, а имена форм, элементов управления, модулей и классов не могут превышать 40 символов. Visual Basic не ограничивает фактическое количество различных объектов в проекте.
◆Ограничения управления◆
Каждый неграфический элемент управления (все элементы управления, кроме фигур, линий, изображений и меток) использует окно. Каждое окно использует системные ресурсы, поэтому общее количество окон, которые могут существовать одновременно, ограничено доступными ресурсами. Точный предел зависит от доступных системных ресурсов и типа используемого контроля. Чтобы сократить потребление системных ресурсов, вы можете использовать элементы управления фигурой, линией, меткой и изображением вместо элементов управления графическим полем при создании или отображении графики.
1. Общее количество элементов управления
Максимальное количество элементов управления, разрешенное в одной форме, зависит от типа используемых элементов управления и доступных системных ресурсов. Однако существует фиксированный предел — только 254 имени элемента управления, разрешенные для каждой формы. Поскольку все элементы управления в массиве имеют одно и то же имя, массив элементов управления учитывает этот предел только один раз. Во всех версиях ограничение на индексы управляющего массива находится в диапазоне от 0 до 32 767. Если вы размещаете элементы управления поверх каждого элемента управления, например вложенные элементы управления фреймом в фрейм, Visual Basic обычно принимает не более 25 уровней вложенных элементов управления.
2. Ограничения на специальные меры контроля
В следующей таблице перечислены ограничения свойств для специальных элементов управления в Visual Basic.
Элементы управления списками List и ListCount и элементы управления полем со списком: максимальное количество элементов — 32 КБ, а ограничение размера для каждого элемента — 1 КБ (1024 байта);
Управление текстовым полем: ограничено 64 КБ;
Управление меткой заголовка: ограничено 1024 байтами;
Элементы управления кнопками команд, элементы управления флажками, элементы управления рамками и элементы управления дополнительными кнопками: ограничено 255 символами, а любые заголовки, превышающие эти ограничения, усекаются;
Название свойства пользовательского контроля: ограничено 32 КБ.
Элементы управления меню: ограничено 235 символами.
Пометить все элементы управления: ограничено доступным размером памяти.
Назовите все элементы управления: не более 40 символов.
Обратите внимание, что в Visual Basic имена свойств элементов управления ограничены 30 символами.
◆Ограничения кода◆
Общее количество строк кода, которые можно загрузить в форму, класс или стандартный модуль, ограничено 65 534 строками. Одна строка кода ограничена 1023 байтами. Перед фактическим текстом в строке не может быть более 256 начальных пробелов, а в логической строке не может быть более 25 символов продолжения строки (_).
1. Процедуры, типы и переменные
Ограничений по количеству процедур на модуль нет. Каждый процесс может содержать до 64 КБ кода. Если процедура или модуль превышает этот предел, Visual Basic генерирует ошибку времени компиляции. Если вы столкнулись с такой ошибкой, вы можете избежать ее, разделив особенно большую процедуру на несколько меньших процедур или переместив объявление уровня модуля в другой модуль. Visual Basic использует таблицы для хранения имен идентификаторов (переменных, процедур, констант и т. д.) в коде. Размер каждой таблицы ограничен 64 КБ.
2. Таблица объявлений динамической библиотеки
Каждый модуль формы и кода использует таблицу, описывающую структуру точки входа в динамическую библиотеку. Каждая структура имеет размер около 40 байт, а размер таблицы ограничен 64 КБ, в результате чего на модуль приходится около 1500 объявлений.
3. Список проектов
Все приложение использует таблицу, содержащую все имена. Эти имена включают в себя:
· Постоянное имя
· Имя переменной
· Имя определения индивидуального типа
·Имя модуля
·Имя объявления процедуры DLL
Общий размер таблицы имен проектов не ограничен, но записи с учетом регистра не должны превышать 32 КБ. Если предел в 32 КБ превышен, идентификатор PRivate можно повторно использовать в другом модуле, чтобы ограничить количество записей с учетом регистра до 32 КБ.
4. Таблица ввода
Каждый раз, когда идентификатор упоминается в другом модуле, во входной таблице создается запись. Каждая такая запись имеет размер не менее 24 байт, но ограничена 64 КБ, поэтому каждый модуль может иметь примерно 2000 ссылок.
5. Таблица ввода модуля
Каждый модуль в этой таблице имеет размер до 125 байт, но общий лимит составляет 64 КБ, поэтому каждый проект может создать примерно 400 модулей.
◆Ограничение данных◆
Следующие ограничения применяются к переменным в языке Visual Basic.
1. Данные модуля формы, стандарта и класса.
Раздел данных модуля VBA (то есть данные, определенные в разделе объявления) любой формы или модуля в Visual Basic имеет до 64 КБ раздела данных, который включает в себя следующие данные:
·Локальные переменные, объявленные с помощью Static
·Переменные уровня модуля, которые не являются массивами и строками переменной длины.
·Каждый массив модулей и строка переменной длины занимают 4 байта.
2. Процедуры, типы и переменные
Если процедура или модуль превышает ограничение кода в 64 КБ, Visual Basic генерирует ошибку времени компиляции.
Если размер локальных переменных, определенных в процедуре, превышает 64 КБ, генерируется ошибка «Слишком много локальных нестатических переменных».
Если переменные уровня модуля, определенные в модуле, превышают 64 КБ или определенный пользовательский тип превышает 64 КБ, возникает ошибка «Фиксированные или статические данные не могут превышать 64 КБ».
Если вы столкнулись с такой ошибкой, вы можете избежать этой ошибки, разделив слишком большую процедуру на несколько меньших процедур или переместив объявление уровня модуля в другой модуль.
Массивы, объявленные как переменные, не могут использовать все пространство массива, только дескрипторы массива способствуют ограничению в 64 КБ. Например, объявленный в процедуре или как объявление на уровне модуля, Dimx(1000000)AsByte. Однако если вы объявите большой массив записей фиксированного размера, а затем объявите экземпляры этих записей как переменные, может произойти переполнение памяти.
3. Индивидуальные типы
Хотя сумма многих строк переменной длины пользовательского типа может превышать 64 КБ (каждая строка переменной длины пользовательского типа занимает всего 4 байта; фактическое содержимое строки хранится отдельно), переменные пользовательского типа не могут превышать 64 КБ. Пользовательские типы могут быть определены с другими пользовательскими типами, но общий размер этого типа не может превышать 64 КБ.
4. Стековое пространство
Параметры и локальные переменные во время выполнения занимают пространство стека. Переменные уровня модуля и статические переменные не занимают пространство стека, поскольку они выделены в разделе данных формы или модуля. Любая вызываемая процедура DLL при выполнении использует стек.
Сам Visual Basic использует стек, например, для сохранения промежуточных значений при оценке выражений.
Общий размер стека, доступный в Visual Basic, составляет один мегабайт (1 МБ) на поток. Однако размер стека может превысить этот предел, если рядом имеется свободная память.
◆Ограничения системных ресурсов◆
Microsoft Windows влияет на некоторые ограничения Visual Basic и приложений, созданных с его помощью. Эти ограничения различаются в зависимости от версии Microsoft Windows.
Каждое открытое окно использует системные ресурсы (область данных, используемую Microsoft Windows). Если он запускается за пределами диапазона системных ресурсов, возникнет ошибка времени выполнения «Недостаточно доступных ресурсов для работы Windows». Вы можете выбрать «О программе» в меню «Справка» «Диспетчера программ» или «Диспетчера файлов» в Windows NT3.51 или выбрать «О программе» в меню «Справка проводника Windows» в Windows 95 и Windows NT4.0. для определения процента оставшихся системных ресурсов. Приложения также могут вызывать Windows API GetFreeSystemResources, чтобы освободить системные ресурсы, закрыть окна (например, открытые формы и окна «кода», а также окна в других приложениях) и выйти из запущенных приложений.
->