诚心请教,VB搜索文件的问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 23:06:00
小弟是新手,近日在写一个搜索文件的程序遇到了一些问题,下面是我的程序:
Private Sub Command1_Click()

Dim filename As String
filename = Dir(Text1.Text, vbDirectory + vbHidden)

List1.AddItem filename
Do While filename <> ""

List1.AddItem Dir
Dim a As String
a = Dir
If a = "" Then
Exit Do
End If
Loop
End Sub

Private Sub Form_Load()
Text1.Text = ""
List1.Text = ""
End Sub
点击按钮后却老提示a=dir这句不对,我百思不得其解,dir返回的确实是String类型的,我这样写究竟是哪里不妥呢?还请各位赐教!
还有,我看见有人这样写:
Private Sub Form_Click()
On Error Resume Next
Dim sFile As String
sFile = Dir("C:\")

Do While Len(sFile)
List1.AddItem sFile
sFile = Dir()
Loop
End Sub

这里他用了个Len函数我也是很困惑,我知道Len是求总量的函数,但用在这里起什么作用呢?他这个程序我已经试过了,可以运行的,请各位高手解我心中的疑惑!
哦,下面Len的那么例子我明白了,但我自己写的那个程序究竟哪里错了?

Len 不是求总量的,是求长度的,字符串长度、或变量占的字节数等。

Do While Len(sFile) 的意思是,当文件读完后, sFile=dir() 返回空串,即Len(sFile)=0,即退出循环。

你的程序,这里
List1.AddItem Dir
Dim a As String
a = Dir
每次调用Dir都是返回目录里面的下一个文件,当目录里只有一个文件时,List1.AddItem Dir已经返回其文件名,你又调用a = Dir,因为已经没有文件了,所以会报错

改成
Dim a As String
a = Dir
List1.AddItem a

至于下面的程序,len是用来返回串的长度的,当dir没有返回值的时候,sfile="",len(sfile)=0,是可以退出循环的