單一工程可以包含多達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來回收系統資源、關閉視窗(例如開啟的窗體和「程式碼」窗口,以及在其它應用程式中的視窗)並退出執行的應用程式。
->