Восстановить пути | |
---|---|
tmp_adr Автор Сообщений: 185 Дата регистрации: 29.10.2007 |
Здравствуйте, что-то подзабыл, как можно обойти такую ошибку, что программа не находит пути к процедуре
Когда в меню запускаешь пункт 2222, который запускает программу curl, то запуская пункт 11111 выходит сообщение , что файл pr1.prg не существует, чё то curl чистит в памяти. Куда то надо записывать и восстанавливать переменные наверное..
|
Re: Восстановить пути | |
---|---|
Каратаев Сообщений: 3977 Откуда: Алматы Дата регистрации: 04.12.2001 |
Насколько я помню подобную проблему (было очень давно), то стоит попробовать вместо 1111 и 2222 прописать символьные значения, т.е. текст вместо цифр...
------------------ Никогда не бывает настолько плохо, чтобы не могло быть еще хуже. |
Re: Восстановить пути | |
---|---|
Каратаев Сообщений: 3977 Откуда: Алматы Дата регистрации: 04.12.2001 |
А сорри, невнимательно прочитал.
Перед запуском пункта меню запомни путь, а после выполнения восстанови. Ну как-то так:
------------------ Никогда не бывает настолько плохо, чтобы не могло быть еще хуже. |
Re: Восстановить пути | |
---|---|
akvvohinc Сообщений: 4218 Откуда: Москва Дата регистрации: 11.11.2008 |
Пути к процедуре не ищутся. Пути требуются для нахождения PRG. Поэтому если имена процедуры и PRG не совпадают (как в вашем случае), то PRG, содержащий требуемую процедуру, должен быть либо уже загружен в память, либо до вызова его надо подгрузить командой SET PROC TO <имя_PRG> Дело не в собственно Curl. Более удивительно, что процедуры, вызываемые из меню, вообще находятся, ведь после построения меню головной программой, назову её Makemenu, она завершается (выполняет её RETURN). И по-хорошему непонятно, почему Фокс вообще потом ищет процедуры в файле Makemenu (который уже завершился!). Видимо, до поры до времени Makemenu хранится в памяти (в стеке вызовов), который очищается после запуска внешнего EXE, и Фокс перестает искать процедуры в Makemenu без явного её указания командой
Вот и добавьте эту команду в Makemenu, например, перед её RETURN. Исправлено 1 раз(а). Последнее : akvvohinc, 11.10.22 03:49 |
Re: Восстановить пути | |
---|---|
tmp_adr Автор Сообщений: 185 Дата регистрации: 29.10.2007 |
Спасибо,
SET PROC TO Makemenu, решило проблему.. Это моя недоработка, сокращал лишнее, чтоб была видна проблема, на самом деле меню вызывается из программы более верхнего уровня, типа
|
Re: Восстановить пути | |
---|---|
akvvohinc Сообщений: 4218 Откуда: Москва Дата регистрации: 11.11.2008 |
Значит, то объяснение, которое я дал в предыдущем посте, не совсем точно описывает происходящее, потому что и в этом случае Makemenu завершается. Однако вызов внешнего EXE не влияет на Makemenu в этом случае - она остается в памяти, и её процедуры остаются доступными и без SET PROC до выполнения CLEAR EVENTS. Поэтому мне непонятно, как вы вышли на проблему - у меня ваш реальный вариант (до сокращений) работает и без SET PROC. Возможно, это как-то связано с тем, что Makemenu содержит команды меню, потому что любой другой PRG, содержащий процедуры при аналогичном вызове, будет выгружен из памяти после запуска внешнего EXE, и его процедуры перестанут быть доступными - потребуется явный SET PROC. ----------- PS В своё время, когда команда SET PROC допускала подключение лишь одного процедурного файла, а включать все процедуры в один PRG было неудобно, а иногда и невозможно (один из них попадал нам со стороны и в виде FXP), то мы выходили из положения, вызывая процедурные PRG в цикле: - головная программа вызывала первый процедурный PRG, передавая ему список остальных PRG - вызванный PRG принимал этот список, вызывал первый PRG из этого списка, передавая ему список остальных PRG - и так далее пока список PRG не будет пуст - если очередной PRG получал пустой список, то он вызывал некоторую процедуру головной программы, с которой и продолжалось её выполнение - цикл вызовов замыкался, но ни один процедурный файл не был завершен по RETURN, они все оставались в памяти и их процедуры были всегда доступны. Исправлено 2 раз(а). Последнее : akvvohinc, 11.10.22 12:20 |
Re: Восстановить пути | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
() Да, процедура должна быть явно указана в SET PROCEDURE TO, или иметься в "области видимости" (определена в выполняемом prg-файле, или состоять в списке процедур в файлах SET PROC). Кстати, иногда удобно назначать SET PROC ADDITIVE какие-то файлы на время работы [модального] экрана (например, в Init экрана), а потом "убивать" эти временно необходимые процедуры (в Destroy экрана) CLEAR PROC имя...
А так да, использование (области видимости, и их наличие) переменных в фоксе старомодное ([PRIVATE], PUBLIC, LOCAL), но хватает... Не хватает этих настроек к процедурам, хотя опять же, а много ли надо ) |
Re: Восстановить пути | |
---|---|
Taran Сообщений: 13624 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Вот вы докопались до этой SET PROC И видимости процедур.
Все давно решено. Создал объект с требуемыми методами и дергай их. Хер ли тут умничать? |
Re: Восстановить пути | |
---|---|
ssa Сообщений: 13007 Откуда: Москва Дата регистрации: 23.03.2005 |
Угу, достаточно вот такой строки в config.fpw
------------------ Лень - это неосознанная мудрость. |
Re: Восстановить пути | |
---|---|
Taran Сообщений: 13624 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Ни черта не понял. Во первых бездарный состав каталов и соответственно строки. А во вторых. Никогда не использовал этот параметр именно в config.fpw. Он там вообще ни куда не впёрся. Есть SET PATH и она более интересна. А в нормальном приложении и она не нужна. |
Re: Восстановить пути | |
---|---|
akvvohinc Сообщений: 4218 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Обсуждался не доступ к PRG-файлам, а к процедурам, находящимся внутри некоторых PRG. И здесь никакой PATH не поможет. Если каждую процедуру ты оформляешь как отдельный PRG, то ради бога - тебе SET PROC не потребуется, но у автора темы все процедуры, вызываемые из меню, находились в одном PRG, и чтобы они выполнялись, требовалось, чтобы этот PRG находился в памяти. И штатный вариант как этого добиться, как раз и есть команда SET PROC. |
Re: Восстановить пути | |
---|---|
ssa Сообщений: 13007 Откуда: Москва Дата регистрации: 23.03.2005 |
Есть чем годиться! Цитата:Как определена бездарность? Цитата:Незнание не освобождает от ответственности. А бесполезность для тебя не означает бесполезности для других. Цитата:Вот именно. Потому и не используется. Так о чем спичь? ------------------ Лень - это неосознанная мудрость. |
Re: Восстановить пути | |
---|---|
Taran Сообщений: 13624 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Об умении пользоваться инструментом. И речь вести по существу, а не воду толочь в ступе. |
Re: Восстановить пути | |
---|---|
Taran Сообщений: 13624 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Можно бесконечно долго одевать штаны через голову, а программы городить через жопу. И советовать и разбирать устаревшие технологии. |
Re: Восстановить пути | |
---|---|
akvvohinc Сообщений: 4218 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата: 1) Команда SET PROC появилась в Фоксе гораздо раньше каких-либо объектов. 2) Что же касается "умничанья", то создавать некий объект только ради того, чтобы не пользоваться SET PROC, это и есть самое настоящее "умничанье". Если я не прав, то объясни, чем твой вызов object.function() лучше моего function(). |
Re: Восстановить пути | |
---|---|
Taran Сообщений: 13624 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Если автору топика понадобится, то я объясню. С тобой комедию ломать мне раньше надоело. |
Re: Восстановить пути | |
---|---|
akvvohinc Сообщений: 4218 Откуда: Москва Дата регистрации: 11.11.2008 |
Обычная демагогия - никакой полезной инфы. К тому же - это и не ответ на то, что SET PATH и SET PROC - совершенно разные вещи, и одно не заменяет другое. |
Re: Восстановить пути | |
---|---|
akvvohinc Сообщений: 4218 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Чтобы кому-то что-то понадобилось, надо сначала объяснить смысл предложения, не считаешь? |
Re: Восстановить пути | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Наверно, каждый прав тот, у кого все работает.
Автору топика написали, и он просто найдет тут вариант, на котором и у него заработает. А что еще? Если автор преподает студентам Фокс, то ... Вряд ли он преподает,
Исправлено 2 раз(а). Последнее : Ydin, 24.10.22 12:53 |
Re: Восстановить пути | |
---|---|
tmp_adr Автор Сообщений: 185 Дата регистрации: 29.10.2007 |
Здравствуйте, хотелось бы тему закрыть, т.к. не желательно, чтоб она превращалась из дискуссии в пикирование, выяснение отношений и препирательства..
Фокс по старой памяти использую для сисадминских задач, в данном случае, фокс запускает скрипт на сайте, берёт оттуда данные раскидывает по таблицам, перекидывает в эксель, где строятся диаграммы для каждого пользователя и закидывает опять на сайт.. Наверняка уже есть продукты которые это делают, но я этого не знаю.. |
© 2000-2024 Fox Club  |