|
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
|
|||
---|---|---|---|
#18+
При вызове DO prog1.prg из головной программы ошибка <файл ... not exist>. В проекте файлы PRG находятся в каталоге PROG. Можно сделать установку SET PROCEDURE TO prog1.prg, но хотелось бы знать есть ли другой способ указать где находятся программы (процедуры), на тот случай если программных файлов достаточно много? Имеется ввиду запуск головной программы из среды fox-a. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2008, 09:17 |
|
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
|
|||
---|---|---|---|
#18+
dm_aks, SET PATH "PROGS;LIBS;MENUS;..\LIBS" ?Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2008, 09:29 |
|
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
|
|||
---|---|---|---|
#18+
SET PATH TO prog результата не дает Извиняюсь что не могу ответить подробнее, приходится уехать на некоторое время. Вопрос для меня остается, поэтому обращусь с более конкретно после возврашения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2008, 22:23 |
|
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
|
|||
---|---|---|---|
#18+
[quot]Команда DO выполняет программу Visual FoxPro, которая находится в файле программы. Для более детальной информации об уровнях вложения програмы смотрите Visual FoxPro System Capacities. DO ProgramName1 | ProcedureName [IN ProgramName2] [WITH ParameterList] Параметры ProgramName1 Задает имя программы, которую нужно выполнить.. Если имя программы задано без расширения, Visual FoxPro ищет и пытается выполнить следующие версии программы (в указанном порядке): Executable (.exe) Application (.app) Compiled (.fxp) Program (.prg) Если вы хотите с помощью команды DO выполнить конкретную программу меню, программу формы или запрос, нужно задать соответствующее расширение имени (.mpr, .spr, or .qpr). ProcedureName Задает имя процедуры, которую нужно выполнить. Visual FoxPro сначала ищет эту процедуру в составе выполняемой в данный момент программы. Если процедуры там нет, Visual FoxPro ищет ее в файлах процедуры, открытых по команде SETPROCEDURE. Если задать предложение IN ProgramName2 то Visual FoxPro будет искать процедуру в указанном файле. В одном исполняемом файле (.EXE) или в одном приложении (.APP) может оказаться несколько процедур с одним именем. Когда вы используете команду DO для запуска процедуры в исполняемой версии или в приложении, Visual FoxPro ищет процедуру только в главной программе исполняемого файла или приложения. IN ProgramName2 EВыполняет процедуру из файла программы, носящего имя ProgramName2. Найдя файл, Visual FoxPro выполняет процедуру. Если файл программы найти не удается, появляется сообщение "File does not exist" [Файл не существует]. Если файл программы найден, но в нем нет заданной процедуры, появляется сообщение "Procedure is not found" [Процедура не найдена]. WITH ParameterList Задает параметры для передачи в программу или процедуру. Параметры списка ParameterList cмогут представлять собой выражения, переменные памяти, литералы, поля или пользовательские функции. По умолчанию параметры передаются в программы и процедуры по ссылке. Чтобы передать параметр по значению, поставьте его в скобки. Смотрите Команда SET UDFPARMS как передавать параметры по ссылке и по значению.Максимальное число параметров, которые можно передать в программу или процедуру, равно 26. Подробнее о передаче параметров смотрите Команда LPARAMETERS and Команда PARAMETERS. [/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2008, 08:57 |
|
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
|
|||
---|---|---|---|
#18+
Для примера можно взять такой Main.prg Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
В таком варианте ошибки нет. Если закомментировать строку SET PROCEDURE TO Procedure2.prg ADDI - возникает ошибка при вызове DO Procedure2 При создании и запуске EXE-файла все нормально. Вопрос в том, что процедурных файлов достоточно много и не хотелось бы их все перечислять, но думаю, что другого способа не существует. Так это или не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 14:17 |
|
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
|
|||
---|---|---|---|
#18+
Зависит от... Если процедурный файл создавался только для одной процедуры и имя этой процедуры совпадает с именем процедурного файла, то достаточно настройки SET PATH, чтобы FoxPro нашел нужный файл по одному из указанных путей. Если процедурный файл лежит в текущей директории, то и SET PATH можно не делать. Но такой стиль программирования - не самый лучший. Кроме того, также при настройке SET PATH можно использовать явное указание на процедурный файл через опция IN Код: plaintext
Наконец, вместо процедурного стиля программирования можно использовать объектый подход. Т.е. все процедуры выполняются как методы некоего класса, на базе класса CUSTOM. При старте приложения создается экземпляр этого класса с глобальной областью видимости. Соответственно, вызов процедур будет выглядеть как вызов метода класса Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 14:58 |
|
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
|
|||
---|---|---|---|
#18+
Дело в том, что приходится вносить изменения в старый проект. Хотелось обойтись малой кровью, но боюсь это не получится. Теме не менее спасибо всем за ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 17:08 |
|
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
|
|||
---|---|---|---|
#18+
> SET DEFAULT TO c:\TestVfp9 > home = SYS(5) + SYS(2003) > SET PATH TO Prog В Prog содержаться относительные пути???? И один из них "progs\" > SET PROCEDURE TO Procedure1.prg > SET PROCEDURE TO Procedure2.prg ADDI > WAIT WINDOW ("Main-prog") > DO Procedure1 > CD(home + "\Dbf") Так вот пути (home + "\Dbf\progs) наверняка не существует Т.е. так как абсолютный путь явно сменили - сменились и относительные пути. И поэтому, если фокс до этого не обращался к файлу Procedure2 (хотя бы через set procedure )? то он его и не найдет. > DO Procedure2 > В таком варианте ошибки нет. > Если закомментировать строку SET PROCEDURE TO Procedure2.prg ADDI - > возникает ошибка Решение "малой кровбю" - указать в Prog все пути как home+"\progs ; "+home+"\dbf;"+... Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2008, 08:40 |
|
|
start [/forum/topic.php?fid=41&msg=35634164&tid=1587010]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 322ms |
total: | 464ms |
0 / 0 |