Visual Basic 6.0工程限制

來源:互聯網
上載者:User

  一個單項工程可以包含多達 32,000 個"標識符"(非保留字),它們包括(但不限於)表單,控制項,模組,變數,常量,過程,函數和對象.注意,實際的標識符數受可用記憶體的限制.
  Visual Basic 中的變數名不多於 255 個字元,而表單,控制項,模組和類名不多於 40 個字元.Visual Basic 不限制工程中不同對象的實際數目.

  ◆控制項限制◆
  每個非圖形的控制項(除形狀,直線,映像和標籤之外的所有控制項)都使用一個視窗.每個視窗都使用系統資源,所以可同時存在的視窗總數受到可用資源的限制.確切的限制取決於可用的系統資源和使用的控制項類型.為了減低系統資源的消耗,在建立或顯示圖形時,可以使用形狀,直線,標籤和影像控制而不用圖片框控制項.
  1,控制項總數
  單個表單允許使用的最大控制項數目取決於使用的控制項類型和可用的系統資源.然而,有每個表單只允許 254 個控制項名的固定限制.因為數組中的所有控制項共用一個控制項名,所以控制項數組僅對這一限制計數一次.在所有的版本中,對控制項數組索引的限制是在 0 到 32,767 的範圍之內.如果在每個控制項的頂層上再安放控制項,例如在架構中嵌套架構控制項,VisualBasic 一般只接受不多於 25 層的嵌套控制項.
  2,對特殊控制項的限制
  下表列出了用於 Visual Basic 中特殊控制項的屬性限制.
  List和ListCount列表框控制項和下拉式方塊控制項:項數最多為32K,對每項大小的限制為1K(1024 位元組);
  Text文字框控制項:限制為64K;
  Caption標籤控制項:限於1024位元組;
  命令按鈕控制項,複選框控制項,架構控制項和選項按鈕控制項:限於255個字元,任何超過這些限制的標題均被截尾;
  自訂控制項屬性的標題:限於32K
  菜單控制項:限於235個字元
  Tag所有控制項:僅限於可用的記憶體大小
  Name所有控制項:限於40個字元
  注意,在 Visual Basic 中,控制項屬性名稱限於 30 個字元.

  ◆代碼限制◆
  可被載入到表單,類或標準模組的代碼總數限於 65,534 行.一行代碼限於1023 個位元組.在一行中的實際文本之前最多隻能有 256 個空格的前置,在一個邏輯行中最多隻能有 25 個續行符 ( _).
  1,過程,類型和變數
  對每個模組的過程數沒有限制.每個過程可包含至多 64K 的代碼.如果過程或模組超過這一限制,Visual Basic 便產生編譯時間錯誤.如果遇到這種錯誤,可將特別大的過程分割成若干個較小的過程,或將模組層級聲明移到另一模組,來避免此類錯誤發生.Visual Basic 用表來儲存代碼中的標識符名(變數,過程,常量等).每個表限於 64K.
  2,動態連結程式庫聲明表
  每個表單和代碼模組使用一個描述動態連結程式庫進入點的結構的表.每個結構約 40 個位元組,表的大小限於 64K,形成每個模組大約有 1500 個聲明.
  3,工程名表
  整個應用程式用一張包含所有名稱的表.這些名稱包括:
  ·常量名
  ·變數名
  ·自訂的類型定義名
  ·模組名
  ·DLL 過程聲明名
  對工程名表總大小沒有限制,但是區分大小寫條目不得超過 32K.如果超過了 32K 的限制,可以在不同的模組中重新使用 private 標識符以限制區分大小寫條目數到達 32K.
  4,輸入表
  在不同的模組中每引用一個標識符,便在輸入表中建立一個條目.每一個這樣的入口最小是 24 位元組,但限於 64K,這樣每個模組大約可以有 2000個引用.
  5,模組條目表
  該表中每個模組最多達 125 個位元組,但有 64K 的總限制,這樣每個工程大約可以產生 400 個模組.

  ◆資料限制◆
  應用於 Visual Basic 語言中變數的限制有下面各種.
  1,表單,標準和類別模組資料
  Visual Basic中任何表單或模組的VBA模組資料區段(即在聲明部分中定義的資料)有多達 64K 的資料區段,該資料區段包括下列資料:
  ·用 Static 聲明的局部變數
  ·不是數組和變長字串的模組層級變數
  ·每個模組數組和變長字串占 4 個位元組
  2,過程,類型和變數
  如果過程或模組超過 64K 的代碼限制,Visual Basic 便產生一個編譯時間錯誤.
  如果一個過程中定義的局部變數超過 64K,則產生"太多的局部非靜態變數"錯誤.
  如果一個模組中定義的模組層級變數超過 64K,或定義的自訂類型大於64K,則產生"固定或待用資料不能超過64K"錯誤.
  如果遇到這類錯誤,可將一個太大的過程分割成若干較小的過程,或將模組層級聲明移到另一模組中,來避免這種錯誤的發生.
  作為變數聲明的數組不能使用全部數組空間;只有數組描述符對 64K 的限制起作用.例如,在過程中聲明或作為模組層級聲明,Dim x(1000000) As Byte.然而,如果在記錄中聲明了一個大的,固定大小的數組,然後將這些記錄的樣本聲明為變數時,就會發生記憶體溢出.
  3,自訂的類型
  雖然許多自訂類型的變長字串的總和可以超過 64K(每個自訂類型的變長字串僅占 4 個位元組;而字串的實際內容是分別儲存的)但自訂類型的變數不能超過 64K.自訂類型可用其它自訂類型來定義,但這種類型的總大小不能超過 64K.
  4,堆棧空間
  在運行時過程中的參數和局部變數佔用堆棧空間.而模組層級變數和靜態變數不佔堆棧空間,因為它們被分配在表單或模組的資料區段中.任何被調用的 DLL 過程,在執行時都要使用堆棧.
  Visual Basic 自己也使用堆棧,例如,在計算運算式時儲存中間值.
  Visual Basic全部可用堆棧的大小是每線程一MB(1MB).然而,如果有相鄰的閑置記憶體,堆棧的大小可以超過這個限定.

  ◆系統資源限制◆
  對於 Visual Basic 和用它建立的應用程式的某些限制,是受 Microsoft Windows 的影響.這些限制會因 Microsoft Windows 的版本不同而不同.
  每個開啟的視窗都要使用系統資源(Microsoft Windows 使用的資料區).如果超出系統資源範圍運行,就會產生執行階段錯誤"Windows啟動並執行可用資源不足".可以從 Windows NT 3.51 的"程式管理器"或"檔案管理工具"的"協助"菜單中選取"關於",或者從 Windows 95 和 Windows NT 4.0 的"Windows 資源管理員協助"菜單中選取"關於",來檢測剩餘的系統資源的百分比.應用程式也能調用 Windows 的 API GetFreeSystemResources 來回收系統資源,關閉視窗(例如開啟的表單和"代碼"視窗,以及在其它應用程式中的視窗)並退出啟動並執行應用程式.

女孩不哭(QQ:191035066)@cnblogs@2011-12-29 11:49:01
http://www.cnblogs.com/nbsofer/archive/2011/12/29/2305861.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.