这样处理是是在滥用VB!!!!!!!!!!!!!!VB的dir函数很好用dir(pathname,16),就可以判断目录是否存在 (返回空值就不存在)
dir(pathname,0),就可以判断文件是否存在 (返回空值就不存在)
根本不需要那么多行,还居然用到了API?!
另外,使用错误处理来文件是否存在这样简单的问题是程序设计中
的非常非常坏的习惯。

解决方案 »

  1.   

    楼上的朋友说的没错,Dir函数既简单又有效,和不用之
      

  2.   

    to: tuppin(熊王)
      
    如果按照你的方法,◇首先:
    标准的vbDirectory放着不用,要硬编码使用16?
    标准的vbNormal放着不用,要硬编码使用0?
    如果vb改变了常量值,你的代码不是要改么?◇其次,
    你判断的是给定目录的属性“是”vbDirectory(目录)
    我这里判断是给定目录的属性“有”vbDirectory(目录)
    当目录含有不只一个属性,如隐藏、系统等其它属性的时候,你的判断是不全面的。详细请参考:
    关于判断文件/文件夹是否存在:
    http://www.csdn.net/expert/topic/375/375537.xml
    不经过认真测试和学习,而来否定别人的方法,才是非常坏的习惯吖!我纯粹是在讨论技术,别在意。
      

  3.   

    而且,使用API是为了“更加肯定地”返回正确结果。我并不是不想用现成的内置函数,只不过,有些时候,内置函数不大能胜任,我就选择使用API了。这是个人做法问题,您可以按照自己的实际情况使用您喜欢的方法。谢谢参与讨论。
      

  4.   

    而且,使用API是为了“更加肯定地”返回正确结果。我并不是不想用现成的内置函数,只不过,有些时候,内置函数不大能胜任,我就选择使用API了。这是个人做法问题,您可以按照自己的实际情况使用您喜欢的方法。谢谢参与讨论。
      

  5.   

    Public Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal lpszPath As String) As Long
    Public Declare Function PathIsDirectory Lib "shlwapi.dll" Alias "PathIsDirectoryA" (ByVal lpszPath As String) As LongIf PathFileExists(<文件名>) <> 0 And PathIsDirectory(<文件名>) = 0 Then 文件存在。PathFileExists 判断文件、目录是否存在,PathIsDirectory 判断目录是否存在。返回非零值表示存在。上面的判断语句判断<文件名>是否存在,并且确认它不是目录。系统兼容性:
    Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 4.0 or later). 
    Windows 95/98/Me: Requires Windows 98 (or Windows 95 with Internet Explorer 4.0 or later). 
      

  6.   

    致enmity (灵感之源) 我用0和16只是想描述简单一些,主要目的不是讨论编程风格,而是讨论实现技术。dir的第二个参数包含了隐藏,只读,系统等等属性,
    0也好,16也好,它们都是2的指数,
    这种属性值可以“或”在一起用。在请你告诉我,就判断一个Pathname到底是文件还是目录,是存在还是不存在这个问题,Dir如何作不到?dir又如何不能给出一个更加肯定的结果呢?
    同样使用DIR,就以你给出的三个函数的入口和返回值为标准,写出的代码一定
    比你的短和可靠,同时更易读,你相信吗?我并不反对使用API,在我的程序中只有万不得以才使用,否则直接用C/C++好了,
    干嘛用VB.
      

  7.   

    致enmity (灵感之源) 我用0和16只是想描述简单一些,主要目的不是讨论编程风格,而是讨论实现技术。dir的第二个参数包含了隐藏,只读,系统等等属性,
    0也好,16也好,它们都是2的指数,
    这种属性值都是各占1bit,可以“或”在一起用。在请你告诉我,就判断一个Pathname到底是文件还是目录,
    是存在还是不存在这个问题,Dir()如何作不到?
    dir()又如何不能给出一个更加肯定的结果呢?同样使用DIR(),就以你给出的三个函数的入口和返回值为标准,
    (如果你要求更多的功能,就没法讨论了)
    写出的代码一定比你的短和可靠,同时更易读,你相信吗?
    我并不反对使用API,在我的程序中只有万不得以才使用,否则直接用C/C++好了。
      

  8.   

    好好学习,天天向上
    你的比方不恰当,应该是明明坐飞机可以到美国,偏要说先
    坐火车到俄罗斯,然后作破冰船过白令海峡,还得作一段爬犁穿过阿拉斯加,
    然后再……我只是觉得这个方法容易误导一些VB程序员,以为使用了API就是上了个
    层次……
      

  9.   

    我同意熊王的,因为我就常用DIR(),api我也是为了程序精练才用,要是本例也用API,那也太长了吧?而且又不像enmity(灵感之源)兄说的可以“更肯定的”。因为我也看不出来这两种方式的效果上谁比谁更好。
      

  10.   

    靠,小弟错了还不行呀,小弟以后不敢就是了,
    我不过是说,csdn中的东西,是精髓还是糟粕,你自己批判的吸收,
    大家这样讲话,会伤害人家的heart的
      

  11.   

    enmity(灵感之源) 谢谢你的代码