Public Function fun(str As Integer) Dim str(10) As String 处理过程 ...... 一系列的数组赋值过程 str(0) = "a" ...... str(9) = "b"
fun=str End Function调用: dim arrFun arrFun=fun
你把一个一个数字(str as integer)传进函数,然后Dim str(10) As String, 这样似乎不妥。
Public Function fun(strname As String) Dim str(10) As String ado过程...... str(0) = Mid(rs.Fields(0), 1, 1) str(1) = Mid(rs.Fields(0), 2, 1) ...... str(9) = Mid(rs.Fields(0), 10, 1)
End Function我是想把rs.Fields(0)的第1位放进str(0),把rs.Fields(0)的第2位放进str(1),把rs.Fields(0)的第10位放进str(9)
要返回数组的话把函数定义为variant类型就可以了。 private function fun() as variantend function
未公开的返回数组型函数加速秘诀 在VB6中,函数是能够返回数组对象的。这种情况下,我们不能象返回对象或者数值的其他函数一样使用函数名当做局部变量来存储中间结果,因此不得不生成一个临时局部数组,函数退出前再分配这个数组给函数名,就象下面的代码一样: ’ 返回一个数组,其中含有N个随即元素’ 并且将平均值保存在AVG中Function GetRandomArray(ByVal n As Long, avg As Single) As Single()Dim i As Long, sum As SingleReDim res(1 To n) As Single’ 以随机数填充数组,并计算总和Randomize TimerFor i = 1 To nres(i) = Rndsum = sum + res(i)Next’ 赋值结果数组,计算平均值GetRandomArray = resavg = sum / nEnd Function难以置信的是,只需要简单地颠倒最后2条语句的顺序,就能使上面这段程序变得快些:’ ... ’ 赋值结果数组,计算平均值avg = sum / nGetRandomArray = resEnd Function例如,在一个Pentium II 333MHz 机器上,当N=100,000时,前段程序运行时间为0.72秒,后段程序则为0.66秒,前后相差10%。原因何在呢?前段程序中,VB将拷贝res数组到GetRandomArray对应的结果中,当数组很大时,花费的时间是很长的。后段程序中,由于GetRandomArray = res是过程的最后一条语句,VB编译器就能确认res数组不会被再使用,因此将直接交换res和GetRandomArray的地址数值,从而节省了数组元素的物理拷贝操作以及随后的res数组释放操作。总结如下:当编写返回数组的函数时,一定要将分配临时数组到函数名的语句放在最后,就是其后紧挨者Exit Function 或者End Function的位置。
Dim str(10) As String
处理过程
......
一系列的数组赋值过程
str(0) = "a"
......
str(9) = "b"
fun=str
End Function调用:
dim arrFun
arrFun=fun
这样似乎不妥。
Public Function fun(strname As String)
Dim str(10) As String
ado过程......
str(0) = Mid(rs.Fields(0), 1, 1)
str(1) = Mid(rs.Fields(0), 2, 1)
......
str(9) = Mid(rs.Fields(0), 10, 1)
End Function我是想把rs.Fields(0)的第1位放进str(0),把rs.Fields(0)的第2位放进str(1),把rs.Fields(0)的第10位放进str(9)
private function fun() as variantend function
在VB6中,函数是能够返回数组对象的。这种情况下,我们不能象返回对象或者数值的其他函数一样使用函数名当做局部变量来存储中间结果,因此不得不生成一个临时局部数组,函数退出前再分配这个数组给函数名,就象下面的代码一样:
’ 返回一个数组,其中含有N个随即元素’ 并且将平均值保存在AVG中Function GetRandomArray(ByVal n As Long, avg As Single) As Single()Dim i As Long, sum As SingleReDim res(1 To n) As Single’ 以随机数填充数组,并计算总和Randomize TimerFor i = 1 To nres(i) = Rndsum = sum + res(i)Next’ 赋值结果数组,计算平均值GetRandomArray = resavg = sum / nEnd Function难以置信的是,只需要简单地颠倒最后2条语句的顺序,就能使上面这段程序变得快些:’ ... ’ 赋值结果数组,计算平均值avg = sum / nGetRandomArray = resEnd Function例如,在一个Pentium II 333MHz 机器上,当N=100,000时,前段程序运行时间为0.72秒,后段程序则为0.66秒,前后相差10%。原因何在呢?前段程序中,VB将拷贝res数组到GetRandomArray对应的结果中,当数组很大时,花费的时间是很长的。后段程序中,由于GetRandomArray = res是过程的最后一条语句,VB编译器就能确认res数组不会被再使用,因此将直接交换res和GetRandomArray的地址数值,从而节省了数组元素的物理拷贝操作以及随后的res数组释放操作。总结如下:当编写返回数组的函数时,一定要将分配临时数组到函数名的语句放在最后,就是其后紧挨者Exit Function 或者End Function的位置。