0

我一直在尝试这样做一段时间,但我不知道怎么做。我想从一个外部.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 内当我运行 file("cenas2.prg") 时它返回 true,所以当我尝试设置过程时,我认为返回文件不存在没有任何意义。谁能帮我??

谢谢

4

3 回答 3

0

已经发现问题了。我不得不在过程中强制一个参数,否则它不会执行。感谢你的帮助!

于 2016-11-29T19:01:51.360 回答
0

只需使用完整路径:

set procedure to ("c:\PHC20CRP\cenas2.prg") additive

与其将过程设置为然后使用过程,不如执行代码而不将过程设置为更安全。IE:

do myProc In ("c:\PHC20CRP\cenas2.prg")

我更喜欢这种风格,因为我可以轻松地执行不同程序文件中同名的程序。使用“设置过程”方法,将执行哪一个取决于实例化的顺序并且不可预测。

于 2016-11-28T13:32:12.313 回答
0

让我问你一下。你的 cenas2.prg 是一个单一的例程吗?而不是具有许多过程和功能的程序文件。如果是这样,则不需要 SET PROCEDURE TO,您应该可以直接调用它,只需将其作为项目的一部分。

通常,“SET PROCEDURE”文件是单个 .prg 文件中的一堆例程,因此您不会有几十个甚至数百个常见例程使您的开发文件夹膨胀,例如

*/ This is MyProcedureFile.prg
function oneFunc()
...
endfunc

procedure someOtherProc()
...
endproc

function specialTest()
...
endfunc

*/ End of this complete .prg

那么你会有

将过程设置为 MyProcedureFile 添加

并且所有功能对应用程序都是可见的。如果您的 .prg 文件本身是唯一的例程,则不需要 SET PROCEDURE TO。

于 2016-12-06T11:46:26.193 回答