VB新手问题

[复制链接]
查看11 | 回复2 | 2009-4-20 10:03:03 | 显示全部楼层 |阅读模式
初学VB很多不解,望高手指点。
1.一是关于文件名的。在网上找了一个dir递归搜索目录中所有文件的函数,确实可用
但是问题是有的盘可以所有文件都显示出来,有的文件就提示文件不存在,文件未找到
文件错误,但是文件是存在的,还有就是当搜索到某个文件时停在那,并非死循环就是停在那
程序还是正常的。调试没有出错。没有死机,不知道是什么原因。这个情况到不常见。
对以上问题进行分析发现出错的文件名大多是带中文的,而且是网上保存的网页
例如:
窗体的控件随窗体变化自动调整大小-源码天堂-华夏名网资讯中心 虚拟主机,域名注册,双线虚拟主机,服务器租赁,为7万用户提供服务
但是文件名里面没有非法字符
而且字符不超过255
不知道是为什么。
2.还有就是dir当前目录下的文件或文件夹列表。
当我用 if getattr() 16 排除目录竟然无效。后检查文件夹是只读属性的 值是17
所以用了一个很笨的办法就是 将所有文件夹的可能列出来了
所以向请问一下为何只用if getattr() 16无效。
3.现在用数组,是动态数组,有时候因为种种原因,数组其实并没有赋值(条件不满足),但是已经定义
后面又用 for each in 调用数组 时出错
那该如何判断数组是否是空的(有没有数据)

数组是否存在(有没有定义)

数组是否被清空(有上下标,但是数据没有)

数组是否初始化(没有数据,且没有上下标)
个人理解,大概就是这样,望高手指教
4.使用多为动态数组,但是redim preserve 只对最后一维有用
现在所有维都不确定,且会变,想不丢失数据改变任一维,有什么方法
如果动态数组不行的话有其他方法可以代替吗。
现标 4 分,回答一道加5分。

回复

使用道具 举报

千问 | 2009-4-20 10:03:03 | 显示全部楼层
1.最好把代码列出来,不然不好分析,我用DIR都挺正常的,没遇到过这种情况,可能是你代码中有小错误,可以跟踪调试。2.应该用GetAttr() And 16>0来排除,因为属性值是通过Or运算得出的值,如果具有别的属性就不是这个值了,但And运算后,如果它具有16这个属性,And的结果就是16,否则就是0。3.UBound(a)<0时数组为空。a为数组名,UBound得到的是数组的上限,当数组为空时UBound返回-1。你可以用个BOOLEAN变量来保存数组的状态,看能不能用。4.有难度,想要保留数据的话可以先备份,但效率比较低。也可以拆成很多个数组来保存……用Preserve的话就只能改最后一维。...
回复

使用道具 举报

千问 | 2009-4-20 10:03:03 | 显示全部楼层
1进程有进程句柄和进程id也叫pid般进程都有对应窗口有些无窗口窗口有父窗口有或多子窗口控件比按钮也叫子窗口每窗口或控件都有唯标识也句柄2查找窗口句柄用findwindow子窗口用findwindowexpid用getwindowthreadprocessid进程句柄用openprocess3些api都有返回值只要知道们用法会了vb调试直接按F5运行出问题了...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行