◆控件限制◆
每個非圖形的控件(除形狀、直線、圖像和標簽之外的所有控件)都使用一個窗口。每個窗口都使用系統資源,所以可同時存在的窗口總數受到可用資源的限制。確切的限制取決于可用的系統資源和使用的控件類型。為了減低系統資源的消耗,在創建或顯示圖形時,可以使用形狀、直線、標簽和圖像控件而不用圖片框控件。
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、堆棧空間
在運行時過程中的參數和局部變量占用堆??臻g。而模塊級變量和靜態變量不占堆??臻g,因為它們被分配在窗體或模塊的數據段中。任何被調用的DLL過程,在執行時都要使用堆棧。
VisualBasic自己也使用堆棧,例如,在計算表達式時保存中間值。
VisualBasic全部可用堆棧的大小是每線程一兆字節(1MB)。然而,如果有相鄰的閑置內存,堆棧的大小可以超過這個限定。
◆系統資源限制◆
對于VisualBasic和用它建立的應用程序的某些限制,是受MicrosoftWindows的影響。這些限制會因MicrosoftWindows的版本不同而不同。
每個打開的窗口都要使用系統資源(MicrosoftWindows使用的數據區)。如果超出系統資源范圍運行,就會產生運行時錯誤“Windows運行的可用資源不足”。可以從WindowsNT3.51的“程序管理器”或“文件管理器”的“幫助”菜單中選取“關于”,或者從Windows95和WindowsNT4.0的“Windows資源管理器幫助”菜單中選取“關于”,來檢測剩余的系統資源的百分比。應用程序也能調用Windows的APIGetFreeSystemResources來回收系統資源、關閉窗口(例如打開的窗體和“代碼”窗口,以及在其它應用程序中的窗口)并退出運行的應用程序。
新聞熱點
疑難解答