我编写了一个递归函数,因为要返回2个参数,所以我在全局变量里定义了2个数组Public pxqs() As Integer
Public pxjh() As String
调试的时候,为了监控看数据是否正确,在函数最末一段写了一段:
For k As Integer=0 To pxqs.length-1
MessageBox.Show( pxqs(k) & ":" & pxjh(k) )
next
显示证明 输出正常
但是 当我在主程序调用时
Functions.Execute("多文件递归", dlg.SelectedPath,lg)
Array.Sort(pxqs,pxjh)
MessageBox.Show(pxqs.length)
显示 pxqs.length=0
取不到数据
哪里出问题了?
Dim kjqs As New List(Of Integer)
Dim jh As New List(Of String)
Dim lg As New List(Of String)
Dim path As String = args(0)
Dim ls = args(1)
Dim gs() As String
Dim strs,qs1 As String
strs=Forms("main").Controls("TextBox2").text
strs = strs.Replace(vblf,"")
Dim ds() As String = strs.Split(vbcr)
For Q As Integer = 0 To ds.Length - 1
Dim fs() As String= ds(Q).Split(":")
If fs.Length = 2 Then
Dim qs As String =trim(fs(0))
Dim KJHMS() As String=trim(fs(1)).split(" ")
If kjhms.Length=6 Then
For Each file As String In FileSys.GetFiles(path)
If file.Contains(".txt") Then
ls.add(file)
strs = FileSys.ReadAllText(file)
strs = strs.Replace(vblf,"")
Dim rs() As String = strs.Split(vbcr)
For i As Integer = 0 To rs.Length - 1
Dim cs() As String = rs(i).Split("=")
If cs.Length = 2 Then
Dim lins As String =cs(0)
Dim N,j As Integer
n=0
j=0
For j=0 To 5
If lins.Contains(KJHMS(j)) Then
N=N+1
End If
Next
If cs(1).Contains(N) Then
kjqs.add(qs)
jh.add("错误点 " & file & " <" & i+1 & ">" )
End If
End If
Next
End If
Next
Else
MessageBox.Show("号码格式错误,请检查")
Exit For
End If
Else
MessageBox.Show(fs(0) & "数据格式错误,请检查")
Exit For
End If
Next
For Each p As String In FileSys.GetDirectories(path) '循环调用自身代码
Functions.Execute("多文件递归", p, ls)
Next
pxqs =kjqs.ToArray()
pxjh=jh.ToArray()
For k As Integer=0 To pxqs.length-1
MessageBox.Show( pxqs(k) & ":" & pxjh(k) )
Next
这个是递归函数呀,假设递归调用了这个函数10次,pxqs 最终也只能等于最后一次调用函数的结果。如果要把这10次调用的结果合并到一起,应该使用集合,不要使用数组。而且也没有必要使用全局变量,把集合变量作为参数传入函数即可,类似【
Dim ls = args(1)】的用法