文件 'cenas2.prg' 不存在

File 'cenas2.prg' does not exist

我已经尝试这样做了一段时间,但我不知道该怎么做。我想调用一个从外部 .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")它 return我是真的,所以我认为 return 当我尝试设置程序时我的文件不存在没有任何意义。 谁能帮帮我??

谢谢

只需使用完整路径:

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

与其将过程设置为然后使用过程,不如在不将过程设置为的情况下执行代码可能更安全。即:

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

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

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

让我问你这个。你的 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。