主题:VFP中的PRG程序
vfp123456
[专家分:1020] 发布于 2005-11-26 19:50:00
讨论]VFP中的程序
虽然,VFP现在采用可视化的编程方法,我们常常编写的是方法和事件。但是,PRG程序仍然占有重要的地位。有时,我们需要在软件运行过程中,动态地生成PRG程序完成一些工作。例如在某一备注字段(PRGSTR)中存放一段完整的程序,要动态地生成一个程序PRG01.PRG。
copy memo PRGSTR to PRG01.PRG
do PRG01.PRG
这样可动态地生成程序PRG01.PRG,并执行之。
如果软件项目被编译,上述方法是否可行?编译时是否提示错误?
回复列表 (共12个回复)
沙发
jinlonggao [专家分:17130] 发布于 2005-11-26 21:42:00
设想很好,很有创意,但脱离开VFP的运行环境时不可用.因为要执行.PRG程序,首先需要编译程序编译.
但可以把要执行的代码序列用宏代换的方法嵌入进方法代码中执行,但这有个缺陷,只能运行顺序代码,不能运行循环结构的代码.
板凳
labxj0769 [专家分:21070] 发布于 2005-11-26 22:55:00
将PRG用同一名而内容不同(按楼主的动态生成),编译时将此PRG排除,但要与EXE文件一起复制打包
3 楼
labxj0769 [专家分:21070] 发布于 2005-11-27 10:55:00
1楼说得对,do prgtest.prg 实际执行的是 prgtest.fxp,如没有prgtest.fxp离开
VFP环境不会自动生成prgtest.fxp,提示找不到prgtest.prg ,如找到编程创建FXP文件就可以
4 楼
vfp123456 [专家分:1020] 发布于 2005-11-27 14:42:00
labxj0769你好。你的办法我已经试过多次,编译后仍然不能执行新的程序。
是否有办法将要执行的程序代码在软件运行过程中加到某一方法中?
5 楼
labxj0769 [专家分:21070] 发布于 2005-11-27 20:48:00
我在3楼已说了,要找到编程创建FXP文件的方法,不然达不到你的要求。我也在别的地方找方法
6 楼
labxj0769 [专家分:21070] 发布于 2005-11-29 14:15:00
在网上求助,已找到动态生成PRG的方法写成例子:
http://upload.programfan.com/upfile/200511291411839.rar
动态生成prg程序
1、 可用STRTOFILE()生成PRG,或FCREATE(),或COPY TO
或select... from 表 into ...
2、执行前先清除缓冲中的已编译PRG,
CLEAR PROGRAM &&清除缓冲中的已编译PRG
COMPILE prgtest.prg NODEBUG &&重新编译
3、连编EXE时,将动态生成的PRG选中排除。
连编EXE后,也不用复制过去。用完退出时删除动态
生成的PRG。
4、示例中用了SYS(16,1)和PROGRAM(2)不用传递参数可知是哪个键调用PRG
徐 军 2005/11/29
7 楼
vfp123456 [专家分:1020] 发布于 2005-11-29 21:30:00
非常感激回贴的各位朋友,通过讨论受益匪浅。
8 楼
vfp123456 [专家分:1020] 发布于 2005-11-30 11:23:00
labxj0769你好
你给的例子我在机器上试验时发现,编译后
COMPILE prgtest.prg NODEBUG
执行这一行时,系统提示“此功能不可用”,再向下执行
DO prgtest.prg
系统提示“文件prgtest.prg 不存在”
而在文件夹中可以看到文件prgtest.prg 。
这将如何解决???
9 楼
labxj0769 [专家分:21070] 发布于 2005-11-30 13:53:00
可能是版本或设置的问题,我在这边试验是没发现问题。一时也帮不到你。
我是用VFP9+windows2000
10 楼
甬车 [专家分:20] 发布于 2005-12-02 17:59:00
labxj0769:
您好!我用VF作为开发工具已经10多年了,现第一次来到这里,有很多问题需要请教. BUILD EXE "XTCSB" FROM "XTCSB.pjx"我想用前面这个语句去编译,但是但它在原文件编译时发生错误,谢谢赐教!
我来回复