VB 实时错误:'5' 如何解决?
前面有一行代码为:nName=Dir(LDir.Caption+"\"+CmbFileFilter.Text,7)'第一次调用Dir命令,查找指定目录下指定文件类型的第一...
前面有一行代码为:
nName = Dir(LDir.Caption + "\" + CmbFileFilter.Text, 7) '第一次调用Dir命令,查 找指定目录下指定文件类型的第一个文件名
下面是其他的代码,
然后又有一行代码为:
nName = Dir() '第二次调用Dir命令时,采用空参数表示刚刚使用的那目录和文件过滤条件
问题是这样出现的:
我建了一个用于测试用的文件夹,里面随便存有同种类型的文件许多个,比如txt文件,这些文件名都很正规或者简单,程序运行时,当运行到 nName = Dir() 该行代码时,没有出问题。但是,当把文件名弄成既复杂又很长,比如中英文数字标的符号等混排,259个字符以下的又长又复杂的文件名时,nName = Dir() 该行代码在运行中就出现了上述问题了。问题不出在文件名太长上(如果是文件名太长而出问题,那为何用230个1或者A等简单的字符组成的文件名却不出问题呢?),而是出在文件名中的字符类别太复杂上,这个问题如何解决呢?
VB 实时错误:'5'
无效的过程调用或参数。 展开
nName = Dir(LDir.Caption + "\" + CmbFileFilter.Text, 7) '第一次调用Dir命令,查 找指定目录下指定文件类型的第一个文件名
下面是其他的代码,
然后又有一行代码为:
nName = Dir() '第二次调用Dir命令时,采用空参数表示刚刚使用的那目录和文件过滤条件
问题是这样出现的:
我建了一个用于测试用的文件夹,里面随便存有同种类型的文件许多个,比如txt文件,这些文件名都很正规或者简单,程序运行时,当运行到 nName = Dir() 该行代码时,没有出问题。但是,当把文件名弄成既复杂又很长,比如中英文数字标的符号等混排,259个字符以下的又长又复杂的文件名时,nName = Dir() 该行代码在运行中就出现了上述问题了。问题不出在文件名太长上(如果是文件名太长而出问题,那为何用230个1或者A等简单的字符组成的文件名却不出问题呢?),而是出在文件名中的字符类别太复杂上,这个问题如何解决呢?
VB 实时错误:'5'
无效的过程调用或参数。 展开
4个回答
展开全部
无论文件名怎么复杂,Dir函数都不会出错的,如果你发现出错了,不是文件名的问题,而是在Dir函数返回空字符串后,又运行Dir函数,此时会出错。
相比你是用循环来搜索文件,要注意循环的跳出条件:
nName = Dir(LDir.Caption + "\" + CmbFileFilter.Text, 7)
do while nName<>""
........
......
nName = Dir
loop
相比你是用循环来搜索文件,要注意循环的跳出条件:
nName = Dir(LDir.Caption + "\" + CmbFileFilter.Text, 7)
do while nName<>""
........
......
nName = Dir
loop
更多追问追答
追问
是用循环来搜索文件的,也添加了
If nName = "" Then Exit Do
的异常处理的
追答
你开头加个 On Error Resume Next
展开全部
跟踪出现错误处,看是否超出最大允许范围,如果超出了错误处的允许范围就会出现 5 的错误提示,比如 nName = Dir() 的允许长度是100,但是你到这里是101,那就会出错。
更多追问追答
追问
哦。Dir()命令允许的文件名长度只能为100?不会吧?我用文件名长度为258个字符的由2百多个1组成的长文件名,怎么也没有出错呀?反正 就是中英文标点符号混排且字符数几百个很长时组成文件名时就出错了。
不用dir命令,用什么方式或者命令可以绕这个异常呢?
追答
这是打个比方好不好。
应该是文件名不支持标点符号。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
下面的代码不要省略参数试试
更多追问追答
追问
下面的代码必须省略参数,一种递归调用,不省略反而要出错。
追答
为什么要这么多文件名?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是数字与字符组合,你是否定义了变量?变量定义为哪种类型?还有你把
nName=Dir() 改为 nName=Trim(Str(dir()))看看.
nName=Dir() 改为 nName=Trim(Str(dir()))看看.
追问
变量已经定义为string型,通过单步调试,nName=Dir() 改为 nName=Trim(Str(dir()))的效果是一样的,仍然有异常发生。
当文件名大于100个由汉字字母数字标点符号等混合组成的文件名时,就常出现异常,而且没有规律性,但由纯数字、纯字母组成的文件名,即使再长也不出问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询