2016-11-28 34 views
0

我一直在試圖做一段時間,但我無法弄清楚如何。我想從外部.prg文件調用一個過程到另一個.prg。文件'cenas2.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」)它返回我真的,所以我不認爲這是有道理的返回我文件不存在,當我嘗試設置過程。 任何人都可以幫助我嗎?

感謝

回答

0

已經發現問題。我不得不在程序中強制一個參數,否則它不會執行。感謝你的幫助!

0

只需使用FULLPATH:

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

而不是設置程序,然後使用一個程序,它可能是更安全的沒有設置程序來執行代碼。即:

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

我更喜歡這種風格,因爲我可以很容易地執行在不同過程文件中命名相同的過程。使用「set procedure」方法,執行哪一個取決於實例化的順序並且不可預測。

+0

我不斷收到同樣的錯誤......這太奇怪了。任何想法可能是什麼? –

+0

該文件夾\文件是隻讀還是隱藏? –

+0

否,文件夾\文件可見並設置爲完全永久。 Coudn't發現爲什麼它說文件不存在.. :( –

0

讓我問你這個。你的cenas2.prg是一個單一的例程嗎?而不是具有許多過程和功能的程序文件。如果是這樣,則不需要SET PROCEDURE TO,您應該能夠直接調用它,只需將其作爲項目的一部分即可。

通常,「設定的程序」文件是在一個.prg文件一堆程序的,所以你不要有幾十甚至上百個的函數,腹脹開發文件夾,如

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

procedure someOtherProc() 
... 
endproc 

function specialTest() 
... 
endfunc 

*/ End of this complete .prg 

然後你會

設定的程序來MyProcedureFile添加劑

,所有的功能是應用程序可見。如果你的.prg文件是唯一的例程,你不需要SET PROCEDURE TO。

+0

哦謝謝!這是一個單一的例程,所以我只是做cenas2.prg,它的工作,感謝它會爲我節省很多時間! –

+0

@ J.Snow,很高興它解決了。看看幫助 - >參觀網站禮儀和標記答案解決,讓其他人知道什麼也工作。 – DRapp