如dim
a(5)
as
integer
'定义了1个1维、6个元素数组
dim
a(5,5)
as
integer
'定义了1个2维、36个元素的数组假设你的数据是存在c盘的1txt,且每行为1条数据
新建工程,1个按钮,3个list,
我在代码中使用了3个数组,分别是tmp1,tmp2和tmp3,用来存放提取出来的数据
在代码前部使用了
ReDim Tmp1(100)
ReDim Tmp2(100)
ReDim Tmp3(100)
这里我给了一个100的初值,你可以根据数据量给定一个初值的,大于你的数据量就行,多了也无所谓这样做的好处是提高效率,不然后读取每行后,逐行来redim preserve数组的话,效率很低
后面这个:
ReDim Preserve Tmp1(i - 1)
ReDim Preserve Tmp2(i - 1)
ReDim Preserve Tmp3(i - 1)
就是将数组中多余的无用数组删除
我后面放了list显示的部分,只是演示提取效果,你在实际运用得到tmp1,tmp2,tmp3以后,可以不需要后面的代码了
====================全部完整代码===================
Const Fgf$ = "VB妮可无敌分隔符"
Private Sub Command1_Click()
Dim a$, b, Tmp1$(), Tmp2$(), Tmp3$(), i%
ReDim Tmp1(100)
ReDim Tmp2(100)
ReDim Tmp3(100)
Open "c:\1txt" For Input As #1
Do Until EOF(1)
Line Input #1, a
If a <> "" Then
a = LoveVb(a)
b = Split(a, Fgf)
Tmp1(i) = b(0)
Tmp2(i) = b(1)
Tmp3(i) = b(2)
i = i + 1
End If
Loop
Close #1
ReDim Preserve Tmp1(i - 1)
ReDim Preserve Tmp2(i - 1)
ReDim Preserve Tmp3(i - 1)
List1Clear
List2Clear
List3Clear
For i = 0 To UBound(Tmp1)
List1AddItem Tmp1(i)
List2AddItem Tmp2(i)
List3AddItem Tmp3(i)
Next
End Sub
Private Sub Form_Load()
Command1Caption = "提取"
End Sub
Function LoveVb$(s$)
Dim i%, j%, m%
For i = 1 To Len(s)
m = Asc(Mid(s, i, 1))
If m < 0 Or m > 255 Then
j = i
m = Asc(Mid(s, j + 1, 1))
If m > 0 And m < 255 Then Exit For
End If
Next
s = Left(s, j) & Fgf & Right(s, Len(s) - j)
For i = Len(s) To 1 Step -1
m = Asc(Mid(s, i, 1))
If m < 0 Or m > 255 Then
j = i
m = Asc(Mid(s, j - 1, 1))
If m > 0 And m < 255 Then Exit For
End If
Next
j = j - 1
LoveVb = Left(s, j) & Fgf & Right(s, Len(s) - j)
End Function
呵呵,我的百度空间经常关注哟
定义字符串数组: dim aa(x) as string '其中X是数组里元素数量,X从0开始。
赋值: 一般用循环,如: For Next语句 。
每次使用ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据,但使用Preserve只能改变最后一维的大小,前面几维大小不能改变。
使用动态数组的优点是根据用户需要,有效地利用存储空间,它是在程序执行到ReDim语句时才分配存储单元,而静态数组是在程序编译时分配存储单元。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)