我已经尝试了一段时间,但我无法弄清楚如何做到这一点。我想从外部.prg文件调用一个过程到另一个.prg。
所以,为此,我做:
SET PROCEDURE TO cenas2.prg Additive \\ cenas2.prg is the filename with the procedure called myproc inside
Do myproc
我的问题是,当我运行它时,我收到错误:文件' cenas2.prg'不存在。
所以,我运行了以下代码:
WAIT WINDOW 'Path: ' + SET('PATH') + CHR(13)+CHR(10) + 'Default drive: ' + SET('Default') + CHR(13)+CHR(10) + 'Current directory: ' + CURDIR()
我得到了:
路径:
默认驱动器C:
当前目录:\ PHC20CRP \
cenas2.prg位于PHC20CRP 内,当我运行文件时(" cenas2.prg")它返回我是真的,所以我不喜欢#39; t认为当我尝试设置程序时,返回我的文件是不存在的。 任何人都可以帮助我吗?
由于
答案 0 :(得分:0)
只需使用完整路径:
set procedure to ("c:\PHC20CRP\cenas2.prg") additive
代替将过程设置为然后使用过程,在不设置过程的情况下执行代码可能更安全。即:
do myProc In ("c:\PHC20CRP\cenas2.prg")
我更喜欢这种风格,因为我可以轻松地执行在不同过程文件中命名相同的过程。使用"设置程序"方法,哪个将执行取决于实例化的顺序而不是可预测的。
答案 1 :(得分:0)
已经发现了问题。我不得不在程序中强制一个参数,否则就不会执行。谢谢你的帮助!
答案 2 :(得分:0)
我问你这个问题。你的cenas2.prg是单一的常规吗?而不是具有许多程序和功能的程序文件。如果是这样,不需要SET PROCEDURE TO,你应该可以直接调用它,只需将它作为项目的一部分。
通常是" SET PROCEDURE" file是单个.prg文件中的一堆例程,因此您不需要在开发文件夹中放置数十个甚至数百个常见例程,例如
*/ This is MyProcedureFile.prg
function oneFunc()
...
endfunc
procedure someOtherProc()
...
endproc
function specialTest()
...
endfunc
*/ End of this complete .prg
然后你会有
将程序设置为MyProcedureFile添加剂
并且应用程序可以看到所有功能。如果您的.prg文件是唯一的例程,那么您就不需要设置程序。