VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 2558|回复: 7

[讨论] Dir 函数是不是有bug?

[复制链接]
发表于 2015-5-7 17:35:38 | 显示全部楼层 |阅读模式
在命令窗口就可以试了:
?dir(string(233,"a")) 毛事都没有,?dir(string(234,"a")) 就“噔”的一声,说文件找不到。。。

点评

两个都是文件未找到  发表于 2015-5-8 16:28
在我这儿,这两个都是“文件未找到"  发表于 2015-5-7 19:19
 楼主| 发表于 2015-5-7 17:41:30 | 显示全部楼层
如果此bug确实存在,就不能用 dir 来判断一个文件是否存在了,当路径太长时就出错了。

点评

路径长度不是本来就有260的限制的么?  发表于 2015-5-9 23:24
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-8 08:20:05 | 显示全部楼层
@zzyong00  在我这儿,这两个都是“文件未找到"

你把字符串缩短一点试试看?
回复 支持 反对

使用道具 举报

发表于 2015-5-8 08:41:17 | 显示全部楼层
本帖最后由 cwa9958 于 2015-5-8 08:46 编辑

?dir(string(227,"a")) 没反应,  ?dir(string(228,"a")) 提示文件未找到

XP系统
回复 支持 反对

使用道具 举报

发表于 2015-5-8 10:08:50 | 显示全部楼层
应该是不超过255的大小。
因为你传的参数没有“:”,所以系统认为是查找当前路径的文件,路径会自动在前面加上当前路径,然后就超过255,报错了。

点评

基本正解,算“盘符:\"共3个字符,总共258个 。 不是不算“盘符:\"共3个字符,总共258个  发表于 2015-5-9 11:10
基本正解,但应不算“盘符:\"共3个字符,总共258个  发表于 2015-5-9 09:02
试验了一下,应该是不超过259 ?dir(curdir & "\" & String(233,"a"))  发表于 2015-5-8 10:16
回复 支持 反对

使用道具 举报

发表于 2015-5-8 20:15:11 | 显示全部楼层
213以内无事,>213产生文件未找到 53#错误

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2015-5-9 09:05:34 | 显示全部楼层
ymismy 发表于 2015-5-8 20:15
213以内无事,>213产生文件未找到 53#错误

之所以各位有不同的数值,就是因为各位的 App.Path 不同,见偶在5L的点评
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-11 13:19:22 | 显示全部楼层
?dir("C:\" & string(256,"a")) 没事,?dir("C:\" & string(257,"a")) 出错,这么说最长字符串应该是 259,如果后面有个 '\0',那就是260. 虽然Windows不允许长度超过255的文件名,但 N 层文件夹后某文件的路径很容易就超过这个限制,所以 dir 这个函数设计得太不科学了,怎么说也应该允许2560的长度甚至变长字符串,这样才不容易出错,而只能用

Public Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long

去判断。

点评

你想超过260的话就只能 \\?\C:\123 这种格式的路径  发表于 2015-5-12 22:00
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-6-30 19:08

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表