Файл cenas2.prg не существует

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

Спасибо

3 ответа

Решение

Уже обнаруживает проблему. Мне пришлось принудительно установить параметр внутри процедуры, чтобы он не выполнялся. Спасибо за вашу помощь!

Просто используйте полный путь:

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

Вместо того, чтобы устанавливать процедуру и затем использовать процедуру, было бы безопаснее выполнить код без установки процедуры в. то есть:

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

Я предпочитаю этот стиль, потому что я могу легко выполнять процедуры, которые называются одинаковыми в разных файлах процедур. При подходе "заданной процедуры", который будет выполняться, зависит от порядка создания и не предсказуемо.

Позвольте мне спросить вас об этом. Ваш 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.

Другие вопросы по тегам