Re: Как возвратить параметр из программы VFP? | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
Получить возврат из фокс-ехе у меня не получилось из-за отсутствия StdOut, поэтому использовал рабоче-крестьянский метод через файл.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Как возвратить параметр из программы VFP? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Я думаю, что надо просто отвлечься от того, что вызывается именно EXE, а считать, что вызывается обычный PRG, который писался как "самостоятельная прога". И тогда возможные "проблемы", которые могут всплыть в этом случае, всплывут и в случае EXE, а новых, связанных именно с EXE-вариантом, на мой взгляд, появиться не должно (ну, или в каких-то не совсем стандартных конфигурациях, с которыми я пока дела не имел). Исправлено 1 раз(а). Последнее : akvvohinc, 20.01.21 19:39 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Sawradym Сообщений: 2244 Откуда: Винница Дата регистрации: 15.05.2007 |
Интересно, как Вы себе это приедставляете.
Если бы это было так, то у ТС и вопроса по поводу subj не возникло бы. |
Re: Как возвратить параметр из программы VFP? | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Настройки могут измениться.
|
Re: Как возвратить параметр из программы VFP? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Не думал над этим - возможно, что и никак. Но про "условно" - это я не подумал - раз вторая команда игнорируется, то READ EVENTS можно оставить и безусловным. Возможно, игнорирование второго READ EVENTS ни к чему плохому и не приведет - все будет работать и на первом. В чем вы видите невозможность такой работы в принципе? Почему? По-моему, из топика очевидно, что о возможности вызова EXE через обычный DO ТС просто не знал. Исправлено 1 раз(а). Последнее : akvvohinc, 20.01.21 21:30 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Sawradym Сообщений: 2244 Откуда: Винница Дата регистрации: 15.05.2007 |
Не будет работать. Без READ EVENTS вы прямым ходом пойдете на следующую команду, а там вскоре и Rreturn, так сказать - не приходя в сознание. Не проверял, чисто теоретически. Исправлено 1 раз(а). Последнее : Sawradym, 20.01.21 23:14 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Владимир Максимов Сообщений: 14100 Откуда: Москва Дата регистрации: 02.09.2000 |
Напрямую - никак. Но есть масса косвенных признаков. Например, сравнить имя текущей программы program() и имя стартовой программы program(1). Ну, или просто уровень вложенности по ASTACKINFO() Ну и дальше все просто
В любом случае, если предполагается запускать один EXE из другого, во вложенном EXE это надо каким-то образом "обыграть". Просто так, без переделок, ничего не получится Для возврата значения, первое, что приходит в голову - это глобальная переменная, которую надо определить в основном EXE, а в подчиненном проверить факт ее существования по TYPE(). И если есть, то в нее возвращаемое значение и записывать. Правда, не проверял. Не знаю, сработает ли такой прием... |
Re: Как возвратить параметр из программы VFP? | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Манипуляции с Program() можно заменить флаг-параметром. EXE нужно не только открывать, но и закрывать. Немало настроек понадобятся в двух вариантах не только для второго, но и для первого EXE. То же самое с обработчиком ошибок, запуском меню и т.д. Со всем этим что делать? ЗЫ. Может проще сразу уж объединить программы, чем делать это через IF...ELSE...ENDIF. Исправлено 2 раз(а). Последнее : lulgu, 21.01.21 01:21 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Вы так пишете, как будто вы автор этой программы. Может, можно обойтись созданием нового меню, а затем зациклить ACTIVATE MENU. Тогда к RETURN'у допустите, когда вам будет нужно. А без шуток - понятно, что не каждую прогу можно вызывать через DO, если она не планировалась заранее к такому использованию. Конечно, сработает, так как при таком вызове нет никакой разницы, вызывается ли EXE, APP или PRG - всё глобальное будет видно и внутри. Но такой способ не требуется - всё можно передать/вернуть через параметры. |
Re: Как возвратить параметр из программы VFP? | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
В таких случаях параметры лучше передавать как свойства глобального объекта goEmpty = CREATEOBJECT('Empty'). Тогда второй EXE надо делать полностью автономным с возвращением при выгрузке все измененных настроек в исходное состояние. В первом EXE надо предусмотреть при выгрузке вызов процедуры закрытия второго EXE чтобы оба штатно закрылись. ЗЫ. А еще лучше написать единый универсальный загрузчик, а проекты обозвать конфигурациями как в 1С. |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Естественно. Вообще-то возможна такая ситуация, когда запускаемый (второй) exe-файл является сторонним приложением (и даже возможен расклад, что и исходников нет). В таком случае, надо полагать, exe-файл лучше запускать посредством RUN (или аналогичным способом через сервисы Windows). При таком запуске "по идее" никакого влияния на исходную программу не должно быть, и даже QUIT не должен на исходную программу повлиять. |
Re: Как возвратить параметр из программы VFP? | |
---|---|
ZenTigra Автор Сообщений: 514 Дата регистрации: 03.12.2004 |
Спасибо за обсуждения, посмотрев их, я пришел к выводу, что лучше необходимую часть функционала из второй программы все таки перенести в первую. Да потрачу некоторое время, но оно будет 100% делать, то что мне нужно.
PS.А такой вопрос возник из-за банальной лени, не хотелось напрягаться... Ведь, то что делает код второй программы, работает, вот только не в автоматическом режиме. Исходники есть что от первой, что от второй программы, но просто так перетянут его без изменений не выйдет. |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
А на будущее можно будет заранее принимать меры, чтобы exe-приложение "не валило" стартовую программу.
|
Re: Как возвратить параметр из программы VFP? | |
---|---|
Каратаев Сообщений: 3977 Откуда: Алматы Дата регистрации: 04.12.2001 |
Ну и напоследок ещё вариант... Вторая программа не возвращает значения, а при закрытии пишет их в какой-нибудь файлик, например в обычный txt... А первая программа просто мониторит наличие этого файлика - как только он появился, то считала с него данные и удалила файлик...
------------------ Никогда не бывает настолько плохо, чтобы не могло быть еще хуже. |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Rifat Сообщений: 32 Дата регистрации: 06.02.2012 |
Как вариант, передавать в вызываемую прогу массив по ссылке.
Смотрим, что записала в массив FoxProg.exe |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Если запускается "как автономное exe-приложение, отдельный процесс" то не может. Но команда DO не запускает никаких процессов - она запускает програмный модуль написанный на фоксе - и не важно "упакован" он в exe/app или нет - всё происходит в рамках первого же процесса. Естественно, в этом случае вызванный код может делать всё что угодно - и настройки поменять, и собственно программу завершить "по своему желанию", а не так как предполагал автор "первого" exe. Я бы сказал иначе - лишь "чисто случайно" (0.01%) может оказаться возможным вызвать через DO, выполнить внутри некоторое полезное действие и потом ещё что-то вразумительное получить назад для фоксовой программы собранной в exe и "не планировавшейся заранее к такому использованию". Даже если эта программа это чистый расчётчик безо всякого UI (соответственно и READ EVENTS, меню, _SCREEN/форм и прочего). ------------------ WBR, Igor |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
А если exe-приложение, написанное на VFP, будет запускаться через RUN, то будет запущен отдельный процесс, и никакого прямого влияния он не окажет на исходную программу, так? И ещё вопрос "по ходу пиесы". Насколько понимаю, из приложения FPD (exe, app, fxp) можно по команде RUN вызывать приложение exe, написанное на VFP, а потом благополучно вернуться в среду FPD? Для чего это может пригодиться? Ну, например, для формирования приложением VFP всяких "хитрых" таблиц Excel или для использования каких-либо провайдеров, которые FPD не поддерживает. Во всяком случае, вызов из FPD программ типа Word или Excel выполняется без проблем с минимальными накладными расходами по времени. Загружается, например Word. Далее Word выполняет макрос, указанный в командной строке (при вызове Word). После работы с Word юзер возвращается в приложение FPD. Если таким же образом можно будет работать и с приложениями VFP, то из среды FPD станут доступны многие возможности. Жаль, что VFP не умеет формировать автономные exe-файлы. Или можно будет добавить к exe-файлу ещё парочку файлов с библиотеками (расподожив их в той же папке, где и exe-файл), и этого будет достаточно для работы exe-файла? Или библиотеки надо обязательно перед использованием зарегистрировать в Windows? Исправлено 6 раз(а). Последнее : Simple777, 23.01.21 09:38 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Да, мы какое-то время (пока не переписали проги под VFP), так и работали. Правда, не из-за потребности в Excel'е, а для печати документов "красивого" вида. Кажется, даже длинные имена XML-файлов, требующихся для обмена с другими организациями, приходилось делать через RUN (правда, VFP для этого не требовался). Исправлено 2 раз(а). Последнее : akvvohinc, 23.01.21 13:53 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
А можно глянуть какой-нибудь реальный примерчик? И какие минимально и достаточно прикладывать файлы к exe-модулю? |
Re: Как возвратить параметр из программы VFP? | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Да. Цитата:Нет. ------------------ Лень - это неосознанная мудрость. |
© 2000-2024 Fox Club  |