51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2325|回复: 12
打印 上一主题 下一主题

[原创] 谁知道为什么没有权限吗

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-8-14 10:32:44 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
Dim a1,a2,a3,a4,a5,a6
Set a1=createobject("scripting.filesystemobject")
Set a2=a1.createfolder("e:\han")
Set a3=a1.createtextfile("e:\han\8.txt")
Set a6=a1.getfolder("e:\han")
Set a4=a1.getfile("e:\han\8.txt")
Set a5=a1.opentextfile("e:\bin.txt",2,true)
a5.writeline("the last modified time is '"&a4.datelastmodified&"'")
a5.close
If a4.datelastmodified="2007-8-13" Then
        a4.delete
        else
        a4.copy("e:\8.txt")
    a6.delete
End If
执行到a6.delete那句的时候总是提示没有权限,谁知道为什么吗
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

13#
发表于 2007-8-16 11:00:28 | 只看该作者
同感
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2007-8-15 16:38:41 | 只看该作者
sdlkfj3 学到了,对10楼11楼都表示感谢
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-8-15 09:09:47 | 只看该作者
原帖由 vincenthan 于 2007-8-14 17:40 发表
我想问一下5楼,我改代码时没有写释放a2的代码,只释放了a3,程序一样成功执行完了,是为什么呢,如果关联到对象的话,那么a2不是也应该删除吗

这应该是调用FileSystemObject里面的方法造成的,就是调用CreateFolder和CreateTextFile时有所不同。我没有深入研究过,10楼surlary的解释应该是对的。

CreateFolder在创建完文件夹之后,可能不再对文件夹锁定了;而CreateTextFile可能会继续所定新创建的文件。

BTW,不管实际情况如何,在程序中应该:
把一个资源仅分配给一个对象,比如Set obj1 = objFSO.GetFolder("***")之后就不要在把该文件夹分配给obj2了;
在程序结束的时候释放那个对象,Set obj1 = Nothing;sdlkfj2
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-8-14 17:54:52 | 只看该作者
我的看法是,当你CreateTextFile后,你就可以通过a3对这个文件进行写入了,当你在执行Close方法以前,a3都对这个文件有独占权限,所以才删除目录时会出现权限不够。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-8-14 17:40:32 | 只看该作者
我想问一下5楼,我改代码时没有写释放a2的代码,只释放了a3,程序一样成功执行完了,是为什么呢,如果关联到对象的话,那么a2不是也应该删除吗
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-8-14 13:41:35 | 只看该作者
同意楼上的
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-8-14 11:50:05 | 只看该作者
5楼和6楼得正解
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-8-14 11:20:31 | 只看该作者
Dim a1,a2,a3,a4,a5,a6
Set a1=createobject("scripting.filesystemobject")
Set a2=a1.createfolder("e:\han")
Set a3=a1.createtextfile("e:\han\8.txt")
Set a2=a1.getfolder("e:\han")
Set a3=a1.getfile("e:\han\8.txt")
Set a4=a1.opentextfile("e:\bin.txt",2,true)
a4.writeline("the last modified time is '"&a3.datelastmodified&"'")
a4.close
If a3.datelastmodified="2007-8-13" Then
        a3.delete
        else
         a3.copy("e:\8.txt")
    a2.delete
End If


代码改一下就可以了!!!:)
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-8-14 10:57:07 | 只看该作者
原帖由 vincenthan 于 2007-8-14 10:32 发表
Dim a1,a2,a3,a4,a5,a6
Set a1=createobject("scripting.filesystemobject")
Set a2=a1.createfolder("e:\han")
Set a3=a1.createtextfile("e:\han\8.txt")
Set a6=a1.getfolder("e:\han")
Set a4=a1.getf ...


因为你在脚本的第3、4两行分别把文件夹han和文件8.txt赋给了对象变量a2和a3,在删除语句之前没有释放这些对象。
你可以不必赋值给a2和a3,写成:
Set a1=...
a1.createfolder("e:\han")
a1.createtextfile("e:\han\8.txt")
... ...

或者,在a6.delete之前把a2,a3释放掉:
... ...
Set a2 = Nothing
Set a3 = Nothing
a6.delete
... ...
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-8-14 10:49:22 | 只看该作者
VB呀,你了解一下delete方法,能不能直接删除hen文件夹。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-8-14 10:46:16 | 只看该作者
在QTP中
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2007-8-14 10:36:50 | 只看该作者
路过,你是在什么环境下执行的呢
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-16 07:43 , Processed in 0.078832 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表