adong1982 发表于 2008-9-8 17:42:21

GetSpecialFolder 问题

请大家看下下面的代码?

msgbox 显示文件夹tfolder的路径是 QTP安装路径
而在tfolder下创建的文本tfile却被保存在 系统环境变量tmp路径下

请问tfolder msgbox显示的路径和实际路径不同呢 ?

Dim fso, tempfile
Set fso = CreateObject("Scripting.FileSystemObject")

Function CreateTempFile
   Dim tfolder, tname, tfile
   Const TemporaryFolder = 2
   Set tfolder = fso.GetSpecialFolder(TemporaryFolder)
   tname = fso.GetTempName   
   msgbox fso.getabsolutepathname (tfolder.name)
   msgbox tname
   Set tfile = tfolder.CreateTextFile(tname)
   Set CreateTempFile = tfile
End Function

Set tempfile = CreateTempFile
tempfile.WriteLine "Hello World"
tempfile.Close

adong1982 发表于 2008-9-9 10:44:15

自己顶一下,请达人解答下

rcpp 发表于 2008-9-9 11:13:05

代码有问题,关键在这一句:
msgbox fso.getabsolutepathname (tfolder.name)
应该是
msgbox fso.getabsolutepathname (tfolder.path)
tfolder.name仅仅是文件夹名字,这里得到的值是"temp"
你了解fso的一些用法,应该知道getabsolutepathname 是用来获取绝对路径的
当没有给出路径结构说明的时候(没有盘符如c:,d:以及分隔符\,还有*等匹配符),
就当作当前pathname对待,用当前路径+pathname来获得绝对路径
当前路径其实就是qtp的执行文件路径,比如D:\Program Files\Mercury Interactive\QuickTest Professional\bin
再加上pathname在你的代码里就是tfolder.name,值为"temp",于是就成了
D:\Program Files\Mercury Interactive\QuickTest Professional\bin\temp
这样得到的结果你msgbox出来,当然就不对了

[ 本帖最后由 rcpp 于 2008-9-9 11:14 编辑 ]

adong1982 发表于 2008-9-9 11:26:32

晕啊, 多谢楼上的兄弟

rcpp 发表于 2008-9-9 11:49:31

回复 4# 的帖子

不客气

其实有的时候我们都容易忽略一些参数上的细节
很多开发技巧其实就是这些细节上的问题
页: [1]
查看完整版本: GetSpecialFolder 问题