51Testing软件测试论坛

标题: 谁知道为什么没有权限吗 [打印本页]

作者: 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.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那句的时候总是提示没有权限,谁知道为什么吗
作者: bobile    时间: 2007-8-14 10:36
路过,你是在什么环境下执行的呢
作者: vincenthan    时间: 2007-8-14 10:46
在QTP中
作者: wangyong3552128    时间: 2007-8-14 10:49
VB呀,你了解一下delete方法,能不能直接删除hen文件夹。
作者: winfood    时间: 2007-8-14 10:57
原帖由 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
... ...
作者: nbawz    时间: 2007-8-14 11:20
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


代码改一下就可以了!!!:)
作者: suifengpiao    时间: 2007-8-14 11:50
5楼和6楼得正解
作者: zj521929    时间: 2007-8-14 13:41
同意楼上的
作者: vincenthan    时间: 2007-8-14 17:40
我想问一下5楼,我改代码时没有写释放a2的代码,只释放了a3,程序一样成功执行完了,是为什么呢,如果关联到对象的话,那么a2不是也应该删除吗
作者: surlary    时间: 2007-8-14 17:54
我的看法是,当你CreateTextFile后,你就可以通过a3对这个文件进行写入了,当你在执行Close方法以前,a3都对这个文件有独占权限,所以才删除目录时会出现权限不够。
作者: winfood    时间: 2007-8-15 09:09
原帖由 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
作者: vincenthan    时间: 2007-8-15 16:38
sdlkfj3 学到了,对10楼11楼都表示感谢
作者: zengfanjin5588    时间: 2007-8-16 11:00
同感




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2