在VB6代码中,我使用VBA.FileSystem.Dir从目录路径获取文件名。但它返回空字符串。请找到以下代码
Call getFile.ShowOpen //getFile is CommonDialog Control of VB6
txtFile.Text = getFile.FileTitle //Correct file name is returned
If Dir(getFile.filename) == "" Then
// Conditions come true..But ideally it should not!!!
但该文件位于某个网络位置。可以有任何许可问题吗?如果是,我如何在getFile.ShowOpen对话框中看到该文件,Dir()返回空字符串?
上述代码中出现问题的任何帮助
答案 0 :(得分:1)
考虑以下几点:
afaik,vb6不支持双等号(==)
Dir =(无论如何)可以返回“” 如果无论是目录还是隐藏文件
你可以通过使用来捕获名称 如果Dir(无论如何,vbDirectory或vbHidden或vbArchive或vbNormal)
但你仍然需要测试每一个以查看它是什么。
顺便说一句,最好有一个变量来接收Dir并检查它,而不是检查Dir本身。dim sTgt$
sTgt = Dir(whatever)
另外,顺便说一下,每种类型的替代方法是检查FileLen。
奇怪的是,FileLen不受Hidden / Sys attribs的影响,但如果文件不存在则会出错。
所以,(这是非常老的黑客攻击,但是方便的代码)。
如果为FileLen声明变量
Dim lfLen&
'and have some error coding
On Error resume next
'and then just inspect the target
lfLen = FileLen(stgt)
if lflen > 0 then
... do things
(or if hacking)
... binary open
因为,如果文件不存在, 目录将返回0, 但如果file = archive,hidden,sys它将返回字节。
HTH
加里