【发布时间】:2012-03-14 03:13:05
【问题描述】:
我正在将旧 FoxPro 应用程序移植到 Visual FoxPro。旧程序当然没有使用任何类,但我已经开始在某些情况下使用它们。这导致了我在任何地方都没有提到的开发周期中的问题。
基本上,如果我根据过程文件中定义的类创建一个对象,那么 FoxPro 永远不会放过我的 APP。我无法删除或重建它,每次更改都必须重新启动 VFP。
重现的步骤。用
制作a.prg
SET PROCEDURE TO b
m.test1 = CREATEOBJECT('TestClass')
RELEASE m.test1
并使用b.prg
DEFINE CLASS TestClass AS Control
ENDDEFINE
创建一个名为a的项目:
MODIFY PROJECT a
并添加程序a.prg。那么
BUILD APP a FROM a
DO a.app
DELETE FILE a.app
最后一行会给出
Application file 'c:\...\b.fxp' is not closed
然后如果你再次尝试DELETE,它会说
File access is denied c:\...\a.app
我可以在 Process Explorer 中看到 vfp9.exe 拥有一个在我退出 FoxPro 之前永远不会消失的 APP 文件句柄,无论我尝试什么:
- 将程序设置为
- 全部关闭
- 全部释放
- 取消
- 全部清除
- 令人作呕
【问题讨论】:
-
我正在使用 VFP 7,您不能发出
build app a from a命令,因为它会引发file a.pjx does not exist错误。你有一个 a.pjx 文件吗?也许 9.0 版本不同? -
@DaveB,感谢您尝试这个。我忘了提到我创建了一个项目“a.pjx”并添加了a.prg。您必须以交互方式执行此操作(即不能编写脚本)。
标签: foxpro visual-foxpro