powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
9 сообщений из 9, страница 1 из 1
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
    #35634164
dm_aks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При вызове DO prog1.prg из головной программы ошибка <файл ... not exist>.
В проекте файлы PRG находятся в каталоге PROG.
Можно сделать установку SET PROCEDURE TO prog1.prg, но хотелось бы знать есть ли другой способ
указать где находятся программы (процедуры), на тот случай если программных файлов достаточно много?
Имеется ввиду запуск головной программы из среды fox-a.
...
Рейтинг: 0 / 0
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
    #35634183
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dm_aks,

SET PATH "PROGS;LIBS;MENUS;..\LIBS"

?Так?
...
Рейтинг: 0 / 0
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
    #35636202
dm_aks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SET PATH TO prog результата не дает
Извиняюсь что не могу ответить подробнее, приходится уехать на некоторое время.
Вопрос для меня остается, поэтому обращусь с более конкретно после возврашения.
...
Рейтинг: 0 / 0
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
    #35636525
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[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]
...
Рейтинг: 0 / 0
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
    #35681998
dm_aks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для примера можно взять такой Main.prg

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SET DEFAULT TO c:\TestVfp9
home = SYS( 5 ) + SYS( 2003 )
SET PATH TO Prog
SET PROCEDURE TO Procedure1.prg
SET PROCEDURE TO Procedure2.prg ADDI
WAIT WINDOW ("Main-prog")
DO Procedure1
CD(home + "\Dbf")
DO Procedure2

В таком варианте ошибки нет.
Если закомментировать строку SET PROCEDURE TO Procedure2.prg ADDI - возникает ошибка
при вызове DO Procedure2
При создании и запуске EXE-файла все нормально.
Вопрос в том, что процедурных файлов достоточно много и не хотелось бы их все перечислять,
но думаю, что другого способа не существует.
Так это или не так?
...
Рейтинг: 0 / 0
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
    #35682158
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зависит от...

Если процедурный файл создавался только для одной процедуры и имя этой процедуры совпадает с именем процедурного файла, то достаточно настройки SET PATH, чтобы FoxPro нашел нужный файл по одному из указанных путей.

Если процедурный файл лежит в текущей директории, то и SET PATH можно не делать. Но такой стиль программирования - не самый лучший.

Кроме того, также при настройке SET PATH можно использовать явное указание на процедурный файл через опция IN

Код: plaintext
DO MyProc IN MyProgram

Наконец, вместо процедурного стиля программирования можно использовать объектый подход. Т.е. все процедуры выполняются как методы некоего класса, на базе класса CUSTOM. При старте приложения создается экземпляр этого класса с глобальной областью видимости. Соответственно, вызов процедур будет выглядеть как вызов метода класса

Код: plaintext
1.
2.
3.
4.
5.
PUBLIC goProc
goProc = CreateObject("MyCustom")

goProc.Proc1()
goProc.Proc2()
...
Рейтинг: 0 / 0
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
    #35682618
dm_aks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что приходится вносить изменения в старый проект.
Хотелось обойтись малой кровью, но боюсь это не получится.
Теме не менее спасибо всем за ответы.
...
Рейтинг: 0 / 0
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
    #35683834
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> 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
...
Рейтинг: 0 / 0
Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
    #35693219
dm_aks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Galyamov Rinat, все абсолютно верно.
SET PATH TO (home+"\Prog") <у меня каталог для prg-файлов Prog> в Main.prg решает проблему. Спасибо!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Можно ли вызвать программный файл без установки SET PROCEDURE TO ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]