VisualBasic的工程限制 |
一个单项工程 可以包括多达32,000个"标识符"(非保留字),它们包括(但不限于)窗体、控件、模块、变量、常量、过程、函数和对象 。 留神,实际的标识符数受可用内存的 制约 。 VisualBasic中的变量名不多于255个字符,而窗体、控件、模块和类名不多于40个字符 。VisualBasic不 制约工程中不同对象的实际数目 。 控件 制约 每个非图形的控件(除 形态、直线、图像和标签之外的所有控件)都 使用一个窗口 。每个窗口都 使用系统资源,所以可同时存在的窗口总数受到可用资源的 制约 。确切的 制约取决于可用的系统资源和 使用的控件类型 。为了降低系统资源的 消费,在 缔造或显示图形时, 可以 使用 形态、直线、标签和图像控件而不用图片框控件 。 1、控件总数 单个窗体同意 使用的最大控件数目取决于 使用的控件类型和可用的系统资源 。然而,有每个窗体只同意254个控件名的固定 制约 。由于数组中的所有控件共享一个控件名,所以控件数组仅对这一 制约计数一次 。在所有的版本中,对控件数组索引的 制约是在0到32,767的 规模之内 。假如在每个控件的顶层上再安放控件,例如在框架中嵌套框架控件,VisualBasic普通只 承受不多于25层的嵌套控件 。 2、对特殊控件的 制约 下表列出了用于VisualBasic中特殊控件的属性 制约 。 List和ListCount列表框控件和组合框控件:项数最多为32K,对每项大小的 制约为1K(1024字节); Text文本框控件: 制约为64K; Caption标签控件:限于1024字节; 命令按钮控件、复选框控件、框架控件和选项按钮控件:限于255个字符,任何超过这些 制约的 题目均被截尾; 自定义控件属性的 题目:限于32K 菜单控件:限于235个字符 Tag所有控件:仅限于可用的内存大小 Name所有控件:限于40个字符 留神,在VisualBasic中,控件属性名限于30个字符 。 代码 制约 可被加载到窗体、类或 标准模块的代码总数限于65,534行 。一行代码限于1023个字节 。在一行中的实际文本之前最多不得不有256个空格的前导,在一个逻辑行中最多不得不有25个续行符(_) 。 1、过程、类型和变量 对每个模块的过程数没有 制约 。每个过程可包括至多64K的代码 。假如过程或模块超过这一 制约,VisualBasic便产生编译 工夫 舛误 。假如遇到这种 舛误,可将特殊大的过程分割成若干个较小的过程,或将模块级申明移到另一模块,来幸免此类 舛误 产生 。VisualBasic用表来 保留代码中的标识符名(变量、过程、常量等) 。每个表限于64K 。 2、动态链接库申明表 每个窗体和代码模块 使用一个 形容动态链接库入口点的 构造的表 。每个 构造约40个字节,表的大小限于64K, 构成每个模块大概有1500个申明 。 3、工程名表 整个 利用程序用一张包括所有名称的表 。这些名称包括: ·常量名 ·变量名 ·自定义的类型定义名 ·模块名 ·DLL过程申明名 对工程名表总大小没有 制约,然而 划分大小写的条目不得超过32K 。假如超过了32K的 制约, 可以在不同的模块中再一次 使用private标识符以 制约 划分大小写的条目数 到达32K 。 4、输入表 在不同的模块中每 引用一个标识符,便在输入表中 缔造一个条目 。每一个这样的入口最小是24字节,但限于64K,这样每个模块大概 可以有2000个 引用 。 5、模块条目表 该表中每个模块最多达125个字节,但有64K的总 制约,这样每个工程大概 可以产生400个模块 。 数据 制约 利用于VisualBasic语言中变量的 制约有下面各种 。 1、窗体、 标准和类模块数据 VisualBasic中任何窗体或模块的VBA模块数据段(即在申明 部分中定义的数据)有多达64K的数据段,该数据段包括下列数据: ·用Static申明的 部分变量 ·不是数组和变长字符串的模块级变量 ·每个模块数组和变长字符串占4个字节 2、过程、类型和变量 假如过程或模块超过64K的代码 制约,VisualBasic便产生一个编译时 舛误 。 假如一个过程中定义的 部分变量超过64K,则产生“太多的 部分非静态变量” 舛误 。 假如一个模块中定义的模块级变量超过64K,或定义的自定义类型大于64K,则产生“固定或静态数据不能超过64K” 舛误 。 假如遇到这类 舛误,可将一个太大的过程分割成若干较小的过程,或将模块级申明移到另一模块中,来幸免这种 舛误的 产生 。 作为变量申明的数组不能 使用所有数组空间;惟独数组 形容符对64K的 制约起作用 。例如,在过程中申明或作为模块级申明,Dimx(1000000)AsByte 。然而,假如在记录中申明了一个大的、固定大小的数组, 而后将这些记录的示例申明为变量时,就会 产生内存溢出 。 3、自定义的类型 固然许多自定义类型的变长字符串的总和 可以超过64K(每个自定义类型的变长字符串仅占4个字节;而字符串的实际内容是分别存储的)但自定义类型的变量不能超过64K 。自定义类型可用其它自定义类型来定义,但这 品种型的总大小不能超过64K 。 4、堆栈空间 在运行时过程中的参数和 部分变量占用堆栈空间 。而模块级变量和静态变量不占堆栈空间,由于它们被 调配在窗体或模块的数据段中 。任何被调用的DLL过程,在执行时都要 使用堆栈 。 VisualBasic自己也 使用堆栈,例如,在计算 抒发式时 保留之间值 。 VisualBasic所有可用堆栈的大小是每线程一兆字节(1MB) 。然而,假如有相邻的闲置内存,堆栈的大小 可以超过这个限定 。 系统资源 制约 关于VisualBasic和用它 构建的 利用程序的某些 制约,是受MicrosoftWindows的影响 。这些 制约会因MicrosoftWindows的版本不同而不同 。 每个 打开的窗口都要 使用系统资源(MicrosoftWindows 使用的数据区) 。假如超出系统资源 规模运行,就会产生运行时 舛误“Windows运行的可用资源缺乏” 。 可以从WindowsNT3.51的“程序治理器”或“文件治理器”的“协助”菜单 当选取“关于”,或者从Windows95和WindowsNT4.0的“Windows资源治理器协助”菜单 当选取“关于”,来检测 残余的系统资源的百分比 。 利用程序也能调用Windows的APIGetFreeSystemResources来回收系统资源、关闭窗口(例如 打开的窗体和“代码”窗口,以及在其它 利用程序中的窗口)并退出运行的 利用程序 。 |