首页
社区
课程
招聘
[求助]VB代码如何实现判断某路径下某文件是否存在?
发表于: 2006-5-7 22:37 7362

[求助]VB代码如何实现判断某路径下某文件是否存在?

2006-5-7 22:37
7362
程序中要调用外部独立的EXE程序,用了FileSystemObject类,条件判断路径"compilerPath(G:\从头来过)"下文件"masm.exe"是否存在.将masm.exe放在"G:\从头来过"下了,而程序判断总是不存在.用了下面的测试代码,问题也来了.
 测试代码:
    Public compileFSO As New FileSystemObject
 1  MsgBox compilerPath  
 2  MsgBox compileFSO.FileExists(compilerPath & "\masm.exe") '之前已对compilerPath赋值:G:\从头来过
 运行语句1输出:G:\从头来过.可见赋值是成功的.
   语句2  :False.?????我绝对已把"masm.exe"置于路径"G:\从头来过"下了.
  再修改测试代码:
   因为"G:\从头来过"为当前工程下各文件路径,而是把MsgBox compileFSO.FileExists(compilerPath & "\masm.exe")语句中的"compilerPath"改为"App.Path".其输出变为:True了!!!!
再用两个text类运行时分别显示compilerPath和App.Path,都是:"G:\从头来过",怎么看都一样!!!
  怎么回事?要实现对路径"G:\从头来过"下判断文件"masm.exe"是否存在,该如何写代码才对???
BTW:这里没有使用App.Path是因为本程序完成并安装后并不要求"masm.exe"一定在其目录下.compilerPath由点击设置路径菜单赋值.
补充:compilerPath是由函数ReadValue读取程序安装路径下的setting.ini而赋值:compilerPath = ReadValue("compilerPath", , "compiler"),读取是没问题的,compilerPath 是String型,这样读取要不要注意String型后的结尾字符"\0",应该不少人编程用过.ini吧,要先处理compilerPath,compilerPath & "\masm.exe"才会得到正确形式 ???

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 199
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
要不直接用API: PathFileExists
2006-5-7 23:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
API阅览器里好像找不到PathFileExists,要怎样声明才能用到这个函数?
2006-5-8 00:05
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
Set fe = CreateObject("Scripting.FileSystemObject")
If fe.FileExists("lpFileNamePath") Then
  MsgBox "文件存在!"
Else
  MsgBox "文件不存在!"
End If
2006-5-8 00:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
依照楼上写测试代码如下:
   Dim fe
    Set fe = CreateObject("Scripting.FileSystemObject")
If fe.FileExists(compilerPath & "\masm.exe") Then
  MsgBox "文件存在!"
Else
  MsgBox "文件不存在!"
End If
  运行输出:文件不存在!
 实有而判断还是无......
 
补充:
  compilerPath是由函数ReadValue读取程序安装路径下的setting.ini而赋值:compilerPath = ReadValue("compilerPath", , "compiler"),读取是没问题的,compilerPath 是String型,这样读取要不要注意String型后的结尾字符"\0",应该不少人编程用过.ini吧,要先处理compilerPath,compilerPath & "\masm.exe"才会得到正确形式 ???
2006-5-8 00:50
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
6
用API获的Ini内的字符必须去除多余的"\0"。
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Dim s As String * 256
dim compilerPath As String
dim fe
    GetPrivateProfileString "IniSection", "Key", "", s, 256, "IniFilePath"
    For i = 1 To Len(s)
      If Asc(Mid(s, i, 1)) <> 0 Then
        compilerPath = compilerPath + Mid(s, i, 1)
      Else
        Exit For
      End If
    Next
    Set fe = CreateObject("Scripting.FileSystemObject")
    If fe.FileExists(compilerPath & "\masm.exe") Then
      MsgBox "文件存在!"
    Else
      MsgBox "文件不存在!"
    End If
2006-5-8 09:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
非常感谢"大虾"---小虾!!!
    使用你提供的代码,问题顺利解决
    非常感谢看雪和看雪论坛上热心帮助的各位兄弟,不管你的提示是一点点还是帮助彻底解决!!!
2006-5-8 12:51
0
游客
登录 | 注册 方可回帖
返回
//