主题:怎样判断对象在使用
zhengxinhai
[专家分:30] 发布于 2008-09-12 11:34:00
各位老师,我运行下列代码:
IF directory('d:\czmx') &&如c:\你想测的文件夹存在
DirName='d:\czmx'
loFSO = CREATEOBJECT("Scripting.FileSystemObject")
loFSO.DeleteFolder(dirName)
ENDIF
提示ole错误
加上代码clear all后提示"不能清除对象%,因为它正在使用,请问怎样判断什么对象在使用呢?
最后更新于:2008-09-12 11:36:00
回复列表 (共6个回复)
沙发
cbl518 [专家分:57140] 发布于 2008-09-12 12:06:00
[quote]请问怎样判断什么对象在使用呢?[/quote]
文件夹中有正在使用的文件或是其属性为只读!
板凳
cbl518 [专家分:57140] 发布于 2008-09-12 12:13:00
IF directory('d:\czmx') &&如c:\你想测的文件夹存在
DirName='d:\czmx'
loFSO = CREATEOBJECT("Scripting.FileSystemObject")
LOCAL cerr
ON ERROR cerr=.T.
loFSO.DeleteFolder(dirName,.T.)
ON ERROR
IF cerr
?"文件夹有文件正在使用,不能删除!"
ENDIF
ENDIF
3 楼
moz [专家分:37620] 发布于 2008-09-12 15:15:00
try
loFSO.DeleteFolder(dirName)
catch
messagebox("删除失败")
endtry
4 楼
zhengxinhai [专家分:30] 发布于 2008-09-12 17:35:00
请问moz老师,try
loFSO.DeleteFolder(dirName)
catch
messagebox("删除失败")
endtry中try
cath
endtry
是什么意思?
祝各位老师中秋快乐!!!
5 楼
moz [专家分:37620] 发布于 2008-09-12 17:46:00
try 尝试
catch 抓住(错误)
endtry 结束尝试
6 楼
cbl518 [专家分:57140] 发布于 2008-09-12 18:53:00
新学者慎用
try
endtry 结构化错误处理。
不能明确的移动程序运行到一个 CATCH 或 FINALLY 代码块儿中。
Visual FoxPro 确定变量的作用域是在一个过程中,而不是程序块儿。更确切的说,在 TRY 块儿中定义的变量,在同一个 TRY...CATCH...FINALLY 结构的 FINALLY 块儿中是可见的。但是,一个嵌套的结构中,在 TRY, CATCH, 或 FINALLY 块儿中定义的变量的作用域是局部的(local)。
不应该在 TRY 块儿中初始化变量或设置关键代码,因为不能保证代码会运行。如果一个错误出现在 TRY 块儿代码中的特定行,所有 TRY 块儿后面的代码不会运行。
任何出现在对象的 Error 过程中的错误,必须在对象中处理,并且它不会逐步上移到 ON ERROR 事务或 TRY...CATCH...FINALLY 处理程序。但是,可以在 Error 事件中使用 TRY...CATCH...FINALLY 结构来捕获 Error 事件中的错误。更多的信息,请参见 Error 事件。
在 CATCH 块儿中使用 COMRETURNERROR( ) 函数,将结束所有进一步的处理,并直接返回程序控制权到 Component Object Model (COM) 客户。因此,如果有一个 FINALLY 块儿,它将不会执行。更多的信息,请参见 COMRETURNERROR( ) 函数。
应避免在 TRY...CATCH...FINALLY 结构中使用 SET TEXTMERGE TO MEMVAR 命令,因为,如果结构中出现了错误,内存变量将丢失。
要检测一连串动作和错误处理程序,可以在 TRY...CATCH...FINALLY 代码中使用 SYS(2410) - 错误处理器 函数,比如,用一个 DO CASE 结构,依靠处理器类型来处理异常。更多的信息,请参见 SYS(2410) - 错误处理器。
如果结构封装适当,可以用 TRY...CATCH...FINALLY 和类似 ON KEY LABEL 的命令来处理菜单(menu)和计时器(timer)事件中的错误。下面的示例举例说明了 READ EVENTS 命令如何在 TRY...CATCH...FINALLY 结构中保持程序的控制权,从而捕获菜单事件。错误捕获是由 TRY...CATCH...FINALLY 在调用堆栈的位置约束的。
我来回复