vba程式設計中經常用到陣列,在**中使用陣列之前,需要確保陣列已經完成初始化操作,借助api可以進行判斷。
private declare function safearraygetdim lib "oleaut32.dll" (byref saarray() as any) as long
sub demo()
dim strarray1() as string
dim strarray2() as string
dim strarray3(1 to 3) as string
dim strarray4(1 to 3) as integer
debug.print "strarray1 - " & iif(safearraygetdim(strarray1) > 0, "已初始化", "未初始化")
debug.print "strarray2 - " & iif(safearraygetdim(strarray2) > 0, "已初始化", "未初始化")
debug.print "strarray3 - " & iif(safearraygetdim(strarray3) > 0, "已初始化", "未初始化")
debug.print "strarray4 - " & iif(safearraygetdim(strarray4) > 0, "已初始化", "未初始化")
strarray1 = split("1,2,3", ",")
redim strarray2(1 to 3)
debug.print "***************"
debug.print "strarray1 - " & iif(safearraygetdim(strarray1) > 0, "已初始化", "未初始化")
debug.print "strarray2 - " & iif(safearraygetdim(strarray2) > 0, "已初始化", "未初始化")
end sub
**解析:
執行完dim
語句後,四個陣列的狀態是否相同呢?來看一下vbe中【本地視窗】。
dim strarray1() as string
宣告的陣列,其型別為string()
,「值」為空,這樣的陣列尚未進行初始化無法使用。
strarray3和strarray4則已經完成初始化,根據陣列的資料型別,陣列元素具備相應的初始值,string陣列strarray3
初始值為空字元,integer陣列strarray4
初始值為0,在**中可以訪問其元素的值或者進行賦值等操作。
除了dim
語句之外,第13行和第14行**也可以實現陣列初始化。**執行後,【立即視窗】如下圖所示。
利用api函式safearraygetdim
可以判斷陣列是否已經完成初始化,**執行結果如下。
strarray1 - 未初始化strarray2 - 未初始化
strarray3 - 已初始化
strarray4 - 已初始化
***************
strarray1 - 已初始化
strarray2 - 已初始化
陣列初始化
cpp中陣列初始化方法 簡單的初始化 利用定義變數時賦初值進行初始化。int a 10 float f 10 char ch 5 大括號中的為初始值。較為複雜的初始化 利用memset函式初始化。memset函式用法 void memset void s,int c,size t n 將已開闢記憶體...
陣列初始化
flydream flydream c cat x.cpp include using namespace std int main int argc,char argv flydream flydream c flydream flydream c g g wall x.cpp x.cpp in ...
陣列初始化
一 定義陣列 type arrayname 注 1 陣列定義 c語言宣告 時,不能指定陣列長度。2 定義只是在stack中指定了乙個引用變數,heap中未分配記憶體,所以要在初始化後才能使用。二 陣列初始化 1 靜態初始化 arrayname new type 或 arraynane 注 開發中習慣...