Option Explicit
Type OutlineInfo
szOutLine As String
lStart As Long
lEnd As Long
nLevel As Integer
End Type
form1放两个按钮粘贴下面代码
Option Explicit
Dim colOutlineInfo As New Collection '模块级自定义变量集合
Private Sub Command1_Click()
Dim test As OutlineInfo
Dim i As Integer
For i = 1 To 1000 '添加1000个对象到集合中
test.szOutLine = "test" & i
test.lStart = Rnd() * 10000
test.lEnd = Rnd() * 10000
test.nLevel = Rnd() * 10
colOutlineInfo.Add test, test.szOutLine
Next
End Sub
Private Sub Command2_Click()
Dim test As OutlineInfo
'输出集合中对相个数
Debug.Print colOutlineInfo.Count
'用index数值的方式取其中一个元素
test = colOutlineInfo(200)
Debug.Print test.szOutLine
Debug.Print test.lStart
Debug.Print test.lEnd
Debug.Print test.nLevel
winehero(编程人生) 的方法就可以了,但是这样做不利于在程序间传递。
还是用集合吧,又方便使用又方便传递。
例:
类模块:OutlineInfo
Option Explicit
public szOutLine As String
public lStart As Long
public lEnd As Long
public nLevel As Integer
程序内:
Dim arrOutlineInfo As New Collection,i as long,Inst as Object
i=0
do
'分析
'满足分析条件则:
i=i+1
set Inst=New OutlineInfo'同一工程内,不同工程用:set Inst=createobject("工程名. OutlineInfo")
with Inst
.szOutLine =...
...
end With
arrOutlineInfo.Add Inst,CStr(i)
set Inst=nothing
'分析结束,跳出
loop
比如有一个10000个元素的字节数组a(0 to 9999) as byte,作为数据源。现在每次从这个数组中取出100个元素到b(0 to 99) as byte进行处理,循环100次以后完成全部处理。
这时候每次取100个元素的操作怎么做的呢?一般的操作是象下面这样
dim i as integer,j as integer
for i = 0 to 99
for j = 0 to 99
b(j) = a(i * 100 + j)
.........对b()的操作
nextj
next i
如果用指针的话
dim i as integer
dim lngPtr as long
dim lngAryPtr
lngptr = varptr(a(0))
for i = 0 to 99
copymemory b(0),lngptr + i *100,100
.........对b()的操作
next
Option Explicit
Private Type OutlineInfo
szOutLine As String
lStart As Long
lEnd As Long
nLevel As Integer
End Type
Dim arrOutlineInfo() As OutlineInfo
Dim i As Integer
Private Sub AddData()
If True Then
i = i + 1
ReDim Preserve arrOutlineInfo(i) As OutlineInfo
arrOutlineInfo(i).szOutLine = "KKKK"
.
.
.
.