VB函数中,如何返回一个数组????? ????
不妨给个例子....
谢谢!
问题点数:20、回复次数:14Top
1 楼hot1kang1(网站制作,系统开发,记得-http://3q2008.Com)回复于 2005-08-02 13:38:16 得分 0
返回用户自定义类型的 函数就行Top
2 楼IEQQ(从小事做起)回复于 2005-08-02 13:40:18 得分 0
Public Function ReturnArray(ByRef myarray() As Integer, ByVal s As String) As Boolean
' 把想要修改的数组传入 myarray(),
' 因为是引用调用, 所以对 myarray(), 的修改会保留下来.
' 而对 byval s 的修改不会保留下来.
' 你应该了解一下 byref 引用调用 和 byval 传值调用 的区别.
'学过C/C++语言,这个应该比较好理解.
End Function
Top
3 楼WallesCai(女人之美,在于蠢得无怨无悔,男人之美,在于撒谎撒得白日见鬼)回复于 2005-08-02 13:43:35 得分 0
一:使用全局数组,避免了参数传递,可以提高执行速度
二:使用指针,将数组的首地址传入函数,在函数中寻址。(不要以为我在说C,VB也可以了样作的,只比C稍微麻烦一点点而已,需要用到一个VB的隐藏函数来获得地址)Top
4 楼kao2005()回复于 2005-08-02 13:45:47 得分 0
我的意思是这样子的.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
比如,以下这个例子....
str="abcd"
function Exp(str as string)
...
..
.
end
我想通过这个函数返回一个以下的数组...
exp(0)=a
exp(1)=b
exp(2)=c
exp(3)=d
Top
5 楼MagicianLiu(魔术师·刘)回复于 2005-08-02 14:06:18 得分 0
Function ab(str As String) As String()
Dim i As Integer
Dim a
a = Split(str, ",")
ab = a
End Function
Private Sub Command1_Click()
Dim b
b = ab("1,2,3")
MsgBox b(0) & vbCrLf & b(1) & vbCrLf & b(2)
End Sub
Top
6 楼crycoming(瞎编)回复于 2005-08-02 14:08:24 得分 0
Function Exp(str As String) As String()
Dim a() As String
Dim i As Long
ReDim a(0 To Len(str) - 1) As String
For i = 0 To Len(str) - 1
a(i) = Mid$(str, i + 1, i)
Next
Exp = a
End
Top
7 楼kmlxk(xiaoKKKK)回复于 2005-08-02 14:09:23 得分 0
IEQQ(从小事做起) 说得没错吧@_@
你就照着做,没问题Top
8 楼MagicianLiu(魔术师·刘)回复于 2005-08-02 14:09:56 得分 0
这个正规点
Function getAr(str As String) As String()
getAr = Split(str, ",")
End Function
Private Sub Command1_Click()
Dim b
b = getAr("a,b,c,d")
MsgBox b(0) & vbCrLf & b(1) & vbCrLf & b(2) & vbCrLf & b(3)
End SubTop
9 楼kmzs(.:RNPA:.山水岿濛)回复于 2005-08-02 14:41:07 得分 0
ByRef是常用的解决方法Top
10 楼wenhongL(三脚猫)回复于 2005-08-02 15:11:27 得分 0
Public Type cc
c1 As Integer
c2 As Integer
End Type
Public Function cz(i As Integer) As cc
If i = 0 Then
cz.c1 = 1
cz.c2 = 2
Else
cz.c1 = 2
cz.c2 = 3
End If
End Function
Top
11 楼33881163(吃草的老虎)回复于 2005-08-16 15:04:42 得分 0
Public Function ds()
ds = Array(1,2,3,4,5)
End Function
结果如何呢?我们调用这个函数,无错的执行了;用“UBound”和“LBound”检测函数返回值,正确;用“For Each”检测函数返回值,正确!
我对大家的写法很疑惑啊,直接返回数组不久可以了?Top
12 楼conrad_wan(pineapple)回复于 2005-08-16 15:34:39 得分 0
建议你返回Collection对象,简单易用的说^_^Top
13 楼33881163(吃草的老虎)回复于 2005-08-16 16:08:17 得分 0
函数可以直接返回一个数组啊!为什么大家还这么麻烦地用其他方法实现啊?
Public Function ds()
ds = Array(1,2,3,4,5)
End Function
调用这个函数,正确地返回了一个数组,为什么大家用其他麻烦的方法啊?奇怪奇怪!
Top
14 楼optop(爱琴海)回复于 2005-08-16 18:29:50 得分 0
Private Sub Command1_Click()
Dim count As Integer
Dim str As String
Dim ExpStr() As String
Dim i As Integer
str = "abcd"
count = 0
Do
ReDim Preserve ExpStr(count)'''''>>>>>>>>>动态数据
ExpStr(count) = Left(str, 1)
str = Right(str, Len(str) - 1)
count = count + 1
Loop Until Len(str) = 0
For i = 0 To count - 1
Debug.Print ExpStr(i)
Next i
End Sub
Top




