VisualBasic工程規(guī)格限制
已有 2099 次閱讀2015-6-27 10:26
|個(gè)人分類(lèi):vb入門(mén)
一個(gè)單項(xiàng)工程可以包含多達(dá)32,000個(gè)"標(biāo)識(shí)符"(非保留字),它們包括(但不限于)窗體、控件、模塊、變量、常量、過(guò)程、函數(shù)和對(duì)象。注意,實(shí)際的標(biāo)識(shí)符數(shù)受可用內(nèi)存的限制。
VisualBasic中的變量名不多于255個(gè)字符,而窗體、控件、模塊和類(lèi)名不多于40個(gè)字符。VisualBasic不限制工程中不同對(duì)象的實(shí)際數(shù)目。
控件限制
每個(gè)非圖形的控件(除形狀、直線(xiàn)、圖像和標(biāo)簽之外的所有控件)都使用一個(gè)窗口。每個(gè)窗口都使用系統(tǒng)資源,所以可同時(shí)存在的窗口總數(shù)受到可用資源的限制。
確切的限制取決于可用的系統(tǒng)資源和使用的控件類(lèi)型。為了減低系統(tǒng)資源的消耗,在創(chuàng)建或顯示圖形時(shí),可以使用形狀、直線(xiàn)、標(biāo)簽和圖像控件而不用圖片框控件。
1、控件總數(shù)
單個(gè)窗體允許使用的最大控件數(shù)目取決于使用的控件類(lèi)型和可用的系統(tǒng)資源。然而,有每個(gè)窗體只允許254個(gè)控件名的固定限制。因?yàn)閿?shù)組中的所有控件共享一
個(gè)控件名,所以控件數(shù)組僅對(duì)這一限制計(jì)數(shù)一次。在所有的版本中,對(duì)控件數(shù)組索引的限制是在0到32,767的范圍之內(nèi)。如果在每個(gè)控件的頂層上再安放控
件,例如在框架中嵌套框架控件,VisualBasic一般只接受不多于25層的嵌套控件。
2、對(duì)特殊控件的限制
下表列出了用于VisualBasic中特殊控件的屬性限制。
List和ListCount列表框控件和組合框控件:項(xiàng)數(shù)最多為32K,對(duì)每項(xiàng)大小的限制為1K(1024字節(jié));
Text文本框控件:限制為64K;
Caption標(biāo)簽控件:限于1024字節(jié);
命令按鈕控件、復(fù)選框控件、框架控件和選項(xiàng)按鈕控件:限于255個(gè)字符,任何超過(guò)這些限制的標(biāo)題均被截尾;
自定義控件屬性的標(biāo)題:限于32K
菜單控件:限于235個(gè)字符
Tag所有控件:僅限于可用的內(nèi)存大小
Name所有控件:限于40個(gè)字符
注意,在VisualBasic中,控件屬性名限于30個(gè)字符。
代碼限制
可被加載到窗體、類(lèi)或標(biāo)準(zhǔn)模塊的代碼總數(shù)限于65,534行。一行代碼限于1023個(gè)字節(jié)。在一行中的實(shí)際文本之前最多只能有256個(gè)空格的前導(dǎo),在一個(gè)邏輯行中最多只能有25個(gè)續(xù)行符(_)。
1、過(guò)程、類(lèi)型和變量
對(duì)每個(gè)模塊的過(guò)程數(shù)沒(méi)有限制。每個(gè)過(guò)程可包含至多64K的代碼。如果過(guò)程或模塊超過(guò)這一限制,VisualBasic便產(chǎn)生編譯時(shí)間錯(cuò)誤。如果遇到這種
錯(cuò)誤,可將特別大的過(guò)程分割成若干個(gè)較小的過(guò)程,或?qū)⒛K級(jí)聲明移到另一模塊,來(lái)避免此類(lèi)錯(cuò)誤發(fā)生。VisualBasic用表來(lái)保存代碼中的標(biāo)識(shí)符名
(變量、過(guò)程、常量等)。每個(gè)表限于64K。
2、動(dòng)態(tài)鏈接庫(kù)聲明表
每個(gè)窗體和代碼模塊使用一個(gè)描述動(dòng)態(tài)鏈接庫(kù)入口點(diǎn)的結(jié)構(gòu)的表。每個(gè)結(jié)構(gòu)約40個(gè)字節(jié),表的大小限于64K,形成每個(gè)模塊大約有1500個(gè)聲明。
3、工程名表
整個(gè)應(yīng)用程序用一張包含所有名稱(chēng)的表。這些名稱(chēng)包括:
·常量名
·變量名
·自定義的類(lèi)型定義名
·模塊名
·DLL過(guò)程聲明名
對(duì)工程名表總大小沒(méi)有限制,但是區(qū)分大小寫(xiě)的條目不得超過(guò)32K。如果超過(guò)了32K的限制,可以在不同的模塊中重新使用private標(biāo)識(shí)符以限制區(qū)分大小寫(xiě)的條目數(shù)到達(dá)32K。
4、輸入表
在不同的模塊中每引用一個(gè)標(biāo)識(shí)符,便在輸入表中創(chuàng)建一個(gè)條目。每一個(gè)這樣的入口最小是24字節(jié),但限于64K,這樣每個(gè)模塊大約可以有2000個(gè)引用。
5、模塊條目表
該表中每個(gè)模塊最多達(dá)125個(gè)字節(jié),但有64K的總限制,這樣每個(gè)工程大約可以產(chǎn)生400個(gè)模塊。
數(shù)據(jù)限制
應(yīng)用于VisualBasic語(yǔ)言中變量的限制有下面各種。
1、窗體、標(biāo)準(zhǔn)和類(lèi)模塊數(shù)據(jù)
VisualBasic中任何窗體或模塊的VBA模塊數(shù)據(jù)段(即在聲明部分中定義的數(shù)據(jù))有多達(dá)64K的數(shù)據(jù)段,該數(shù)據(jù)段包括下列數(shù)據(jù):
·用Static聲明的局部變量
·不是數(shù)組和變長(zhǎng)字符串的模塊級(jí)變量
·每個(gè)模塊數(shù)組和變長(zhǎng)字符串占4個(gè)字節(jié) '說(shuō)明數(shù)組和字符串是以指針?lè)绞絺鲄?/font>
2、過(guò)程、類(lèi)型和變量
如果過(guò)程或模塊超過(guò)64K的代碼限制,VisualBasic便產(chǎn)生一個(gè)編譯時(shí)錯(cuò)誤。
如果一個(gè)過(guò)程中定義的局部變量超過(guò)64K,則產(chǎn)生“太多的局部非靜態(tài)變量”錯(cuò)誤。
如果一個(gè)模塊中定義的模塊級(jí)變量超過(guò)64K,或定義的自定義類(lèi)型大于64K,則產(chǎn)生“固定或靜態(tài)數(shù)據(jù)不能超過(guò)64K”錯(cuò)誤。
如果遇到這類(lèi)錯(cuò)誤,可將一個(gè)太大的過(guò)程分割成若干較小的過(guò)程,或?qū)⒛K級(jí)聲明移到另一模塊中,來(lái)避免這種錯(cuò)誤的發(fā)生。
作為變量聲明的數(shù)組不能使用全部數(shù)組空間;只有數(shù)組描述符對(duì)64K的限制起作用。例如,在過(guò)程中聲明或作為模塊級(jí)聲
明,Dimx(1000000)AsByte。然而,如果在記錄中聲明了一個(gè)大的、固定大小的數(shù)組,然后將這些記錄的示例聲明為變量時(shí),就會(huì)發(fā)生內(nèi)存溢
出。
3、自定義的類(lèi)型
雖然許多自定義類(lèi)型的變長(zhǎng)字符串的總和可以超過(guò)64K(每個(gè)自定義類(lèi)型的變長(zhǎng)字符串僅占4個(gè)字節(jié);而字符串的實(shí)際內(nèi)容是分別存儲(chǔ)的)但自定義類(lèi)型的變量不能超過(guò)64K。自定義類(lèi)型可用其它自定義類(lèi)型來(lái)定義,但這種類(lèi)型的總大小不能超過(guò)64K。
4、堆?臻g
在運(yùn)行時(shí)過(guò)程中的參數(shù)和局部變量占用堆?臻g。而模塊級(jí)變量和靜態(tài)變量不占堆?臻g,因?yàn)樗鼈儽环峙湓诖绑w或模塊的數(shù)據(jù)段中。任何被調(diào)用的DLL過(guò)程,在執(zhí)行時(shí)都要使用堆棧。
VisualBasic自己也使用堆棧,例如,在計(jì)算表達(dá)式時(shí)保存中間值。
VisualBasic全部可用堆棧的大小是每線(xiàn)程一兆字節(jié)(1MB)。然而,如果有相鄰的閑置內(nèi)存,堆棧的大小可以超過(guò)這個(gè)限定!這句話(huà)值得推敲,事實(shí)上可能不是這樣的。
系統(tǒng)資源限制
對(duì)于VisualBasic和用它建立的應(yīng)用程序的某些限制,是受MicrosoftWindows的影響。這些限制會(huì)因MicrosoftWindows的版本不同而不同。
每個(gè)打開(kāi)的窗口都要使用系統(tǒng)資源(MicrosoftWindows使用的數(shù)據(jù)區(qū))。如果超出系統(tǒng)資源范圍運(yùn)行,就會(huì)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤“Windows運(yùn)
行的可用資源不足”。可以從WindowsNT3.51的“程序管理器”或“文件管理器”的“幫助”菜單中選取“關(guān)于”,或者從Windows95和
WindowsNT4.0的“Windows資源管理器幫助”菜單中選取“關(guān)于”,來(lái)檢測(cè)剩余的系統(tǒng)資源的百分比。應(yīng)用程序也能調(diào)用Windows的
APIGetFreeSystemResources來(lái)回收系統(tǒng)資源、關(guān)閉窗口(例如打開(kāi)的窗體和“代碼”窗口,以及在其它應(yīng)用程序中的窗口)并退出運(yùn)行
的應(yīng)用程序。