此處為
visualfreebasic程式設計教程(從零開始學或vb高階)
的子章節部分,全部目錄點鏈結。
初始化陣列,變數和udt支援變數初始化。
語法
dim scalar_symbol [as datatype] = expression
dim array_symbol ([lbound to] ubound ) [as datatype] =>
dim udt_symbol as datatype = ( expression [, ...] )
陣列,變數和udt可以在使用dim宣告時給出乙個值,其語法如上所示。請注意初始化不同型別之間的重要區別。標量變數被初始化為正常賦值,使用等號。udt和陣列被賦值乙個等號,後跟大於符號(= >))。陣列值以逗號分隔的值由大括號括起來,udt值以括號括起來的逗號分隔值給出。
這些初始化變數的方法可以巢狀在一起,用於複雜的賦值。例如,要初始化乙個多維陣列:
dim array(1 to 2, 1 to 5) as integer => , }
在此宣告中,最左邊的維度的值作為5索引陣列給出。巢狀允許初始化任何維度的陣列。
udt和陣列也可以彼此巢狀。例如,以下**宣告並初始化udt陣列。
type mytype
var1 as double
var2 as integer
var3 as zstring ptr
end type
dim myvar(2) as mytype => _
對於模組級,靜態或全域性變數,初始化值必須是常量表示式。否則freebasic將報告編譯時錯誤。
變數,物件和陣列的可見性和生命週期
變數,物件或陣列的儲存類確定記憶體賦值的時間和位置以及記憶體何時被銷毀。freebasic有兩個儲存類:automatic 和static .
automatic 變數,物件和陣列生命週期從宣告點開始,並在結束時離開它們宣告的範圍。
automatic 實體將保證為宣告它們的塊的每個例項提供唯一的儲存。例如,在過程中宣告的automatic 變數將被賦值在不同的位址,並且對於每次呼叫過程都具有唯一的狀態(值)。
automatic 使用dim,redim和var關鍵字定義變數,物件和陣列,而不使用shared說明符。
變數,物件和陣列的記憶體賦值在程式堆疊上。
automatic 變數,物件和陣列沒有鏈結。
static 變數,物件和陣列的生命週期從程式建立開始,並以程式終止結束。
static 實體被保證具有與宣告它們的塊的每個例項相同的儲存。例如,在乙個過程中宣告的static 變數將被賦值在同乙個位址上,並且在對該過程的每個呼叫中保留其狀態(值)。
static 使用static關鍵字宣告變數,物件和陣列。使用shared說明符宣告的實體是隱式static .在使用static說明符宣告的過程中宣告的所有實體也隱式static .
static 變數,物件和陣列的內存在可執行檔案的.bss部分或.data部分中賦值,如果它們在定義時被初始化。static 可變長度陣列必須宣告為空,具有空的下標範圍列表;它們的元素資料仍然被賦值在可用儲存中(當它們被調整大小時),但是內部陣列資料被賦值在可執行檔案的.data部分中,以允許元素資料在整個程式執行期間持續存在。
static 變數,物件和陣列預設內部鏈結,除非以前宣告使用extern或common關鍵字。
變數和物件的可見性和訪問規則
變數的範圍是指其在程式中的可見性。變數在其宣告的範圍之外是不可見的(不能被訪問)。宣告變數的位置和方式決定其範圍。
在freebasic中,有4種範圍:local ,shared ,common 和common shared .這些範圍中的每乙個具有不同的可見性規則,具體如下。
本地範圍
在本地作用域中宣告的變數僅在宣告它們的if,for,scope,函式或模組的最本地例項中可見。
if....
dim a as long '只在 if 內有效
endif
sub,function,主體和每個復合語句隱式定義乙個新的本地作用域。
sub
...function
...
dim
a as
long
'只在函式或過程裡有效
end sub end sunction
使用dim或redim顯式宣告的變數佔據其宣告的本地最大塊的範圍。
隱式變數採用最先使用它們的區域性最大scope...end scope塊的範圍,否則將使用sub,function或其主體的範圍。
在本地範圍內,模組級**和功能級**之間沒有可見性。此外,在塊決策或迴圈語句中定義的變數將僅在其尺寸標註的塊內可見。在模組的本地範圍內宣告的變數在該模組中的任何函式中都不可見。類似地,在函式內宣告的區域性變數在模組級**中也不可見,也不會在模組中顯示任何其他函式。
在scope塊內宣告的變數只能被宣告為本地作用域,並且在塊外部不可見。scope塊,但是,繼承了周圍的範圍,所以在scope塊之外宣告的區域性變數將在(see example program )內部可見。
您可以通過使用dim語句明確地宣告變數為本地作用域,或者通過簡單地引入變數(see implicit declarations )來隱式地宣告變數。
共享範圍
在模組的共享作用域中宣告的變數對該模組的模組和所有功能都是可見的。
dim shared a as long '所有的vfb工程裡的模組過程有效
sub..
end sub
與本地範圍不同,共享範圍使模組級變數對該模組的功能可見。換句話說,模組shares 具有其功能的宣告。
變數只能在模組級別宣告為共享作用域。也就是說,只有模組可以共享變數。函式和scope塊都不能在共享作用域中宣告變數,因此在此處宣告的變數只能是該函式或塊的本地變數。
您可以使用帶有shared關鍵字的dim語句來將變數宣告為共享作用域。
共同範圍
所有模組都可以看到在公共範圍內宣告的變數。(一般情況,在vfb裡用不到這個)
使用common宣告的變數對於具有匹配的common變數宣告的其他模組是可見的。宣告的變數名稱必須與模組之間匹配。
公共共享範圍
在公共共享範圍中宣告的變數對於所有模組和這些模組的所有功能都是可見的。
使用common宣告的變數對於具有匹配的common變數宣告的其他模組是可見的。宣告的變數名稱必須與模組之間匹配。在乙個模組中,shared宣告修飾符給出了變數模組範圍,並使該變數對所有子函式和函式都可見。
VFB 使用 MDI 窗體(VFB教程1 6)
此處為 visualfreebasic程式設計教程 從零開始學或vb高階 的子章節部分,全部目錄點鏈結。mdi 指的是 多文件介面 是乙個標準的 gui 概念,可以看到在許多當今流行的應用程式。下面的顯示 mdi 應用程式。正如你所看到的 mdi 允許一次顯示多個窗體的方法。只是由窗體的標題欄上單擊...
VFB 使用者定義的型別(VFB教程2 5)
此處為 visualfreebasic程式設計教程 從零開始學或vb高階 的子章節部分,全部目錄點鏈結。自定義型別 可以由程式設計師建立的變數的特殊型別。使用者定義型別 udt 實際上只是乙個容器,其中包含一些其他變數,如排列,但不同於陣列udt可以容納different 變數型別 而陣列始終包含s...
VFB 多國語言 本地化 (VFB教程1 5)
此處為 visualfreebasic程式設計教程 從零開始學或vb高階 的子章節部分,全部目錄點鏈結。在工程屬性裡選中多語言支援,然後正常寫軟體。當你編譯後,在工程輸出裡,有個 default.lang 語言檔案產生。它把所有控制項 視窗的用到的字串都寫在裡面,你會發現,開啟的軟體,文字都是空白的...