2016-11-28 10 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»), он возвращает мне true, поэтому я не думаю, что имеет смысл возвращать мне файл, не существует, когда я пытаюсь установить процедуру. Может ли кто-нибудь мне помочь?

Благодаря

ответ

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 не требуется, вы должны иметь возможность вызвать его напрямую, просто имея его как часть проекта.

Обычно файл «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.

+0

oh спасибо! Это была единственная процедура, поэтому я просто сделал cenas2.prg, и это сработало, спасибо, что это сэкономит мне много времени! –

+0

@ J.Snow, рад, что это разрешено. Посмотрите на помощь -> тур на этикетке сайта и отметьте ответы, как разрешенные, чтобы другие знали, что сработало. – DRapp