File' cenas2.prg'不存在

时间:2016-11-28 12:34:52

标签: visual-foxpro foxpro dbase clipper

我已经尝试了一段时间,但我无法弄清楚如何做到这一点。我想从外部.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认为当我尝试设置程序时,返回我的文件是不存在的。 任何人都可以帮助我吗?

由于

3 个答案:

答案 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文件是唯一的例程,那么您就不需要设置程序。