:: Visual Foxpro, Foxpro for DOS
Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
Vladimir Sklyar
Автор

Сообщений: 1397
Дата регистрации: 13.06.2002
сабж, нужно чтобы часть функцимонала программы (не доделанного и не проверенного) не попадала в работу (и чтобы шаловливые руки пользователей лишний раз не тыкали куда не нада)


------------------
С уважением Владимир.
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
парсить ком.строку, не?
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
_VFP.StartMode


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
Taran

Сообщений: 13624
Откуда: Красноярск
Дата регистрации: 16.01.2008
_vfp.StartMode
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
И до кучи VERSION(2)
P.S. Скомпилированный exe-ник вполне можно запустить из IDE фокса по DO - и даже отлаживать. Если и это надо отследить, то смотреть по стеку имена модулей - до нахождения exe модуля.


------------------
WBR, Igor




Исправлено 1 раз(а). Последнее : Igor Korolyov, 23.08.17 12:15
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Igor Korolyov
Скомпилированный exe-ник вполне можно запустить из IDE фокса по DO - и даже отлаживать. Если и это надо отследить, то смотреть по стеку имена модулей - до нахождения exe модуля.

По стеку можно и не бегать - просто проверить расширение у SYS(16) в головной программе проекта.

PS
Есть еще один "экзотический" способ - проверить наличие любого файла проекта (не excluded) по заведомо невозможному пути, например:
?FILE('~:\main.fxp')
При работе в EXE файл будет найден.



Исправлено 2 раз(а). Последнее : akvvohinc, 23.08.17 16:19
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
akvvohinc
По стеку можно и не бегать - просто проверить расширение у SYS(16) в головной программе проекта.
Я у себя зачастую так и делаю, но мало ли - DO my.exe может сам быть исполнен не напрямую а из prg, и тут уже exe будет не первым в стеке...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Igor Korolyov
Я у себя зачастую так и делаю, но мало ли - DO my.exe может сам быть исполнен не напрямую а из prg, и тут уже exe будет не первым в стеке...
SYS(16) - это не первый в стеке, а текущий.
Поэтому, если my.* - головная прога проекта, то этого хватит, даже если она вызывается через цепочку нескольких PRG.



Исправлено 1 раз(а). Последнее : akvvohinc, 23.08.17 20:31
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
Berloga

Сообщений: 72
Откуда: Нефтекамск
Дата регистрации: 19.12.2007
Type("_vfp.ActiveProject")="O"
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Berloga
Type("_vfp.ActiveProject")="O"

Думаю, что подавляющему большинству не требуется обязательно открывать проект, чтобы запустить задачу из исходников.
Ratings: 0 negative/1 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
akvvohinc
SYS(16) - это не первый в стеке, а текущий.
Без параметра, да.
akvvohinc
в головной программе проекта.
Как-то пропустил сие уточнение

В общем что так что этак есть ограничения и "особенности применения" про которые не следует забывать.
Да, глянул тут исходники, у меня и то и другое (и _VFP.StartMode и UPPER(JUSTEXT(SYS(16))) = "EXE") используется - для разных целей, конечно. Где-то надо понять запущено ли "через exe" - независимо от того в среде или в рантайме, а где-то именно факт запуска в IDE отловить...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Igor Korolyov
Да, глянул тут исходники, у меня и то и другое (и _VFP.StartMode и UPPER(JUSTEXT(SYS(16))) = "EXE") используется
Ну, вот - после этой темы UPPER() здесь можешь убрать.
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
Berloga

Сообщений: 72
Откуда: Нефтекамск
Дата регистрации: 19.12.2007
akvvohinc
запустить задачу из исходников
В оригинальной головной программе добавить
_screen.AddProperty("_itisexe")
В копии для копошения эту строку удалить/закомментировать.

Можно выбрать любой из 2-ух вариантов запуска: для пользователя, для разработчика.
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Berloga
В оригинальной головной программе...
В копии для копошения ...

Какой оригинал, какая копия?
Вопрос вроде понятный - программа (видимо, оригинал) должна как-то сама определить, как была запущена.

Berloga
Можно выбрать любой из 2-ух вариантов запуска: для пользователя, для разработчика.
Это верно, зачем ему автоматика?
Можно при запуске просто сообщать программе, через EXE, или через PRG ее запустили.
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
Berloga

Сообщений: 72
Откуда: Нефтекамск
Дата регистрации: 19.12.2007
akvvohinc
Это верно, зачем ему автоматика?
Можно при запуске просто сообщать программе, через EXE, или через PRG ее запустили.
Я имею ввиду тот случай, когда разработчик работает в области не скрытого функционала, но с блокировкой скрытого еще недоделанного функционала, чтобы избежать явных ошибок.

Вы делаете что-то. Но оно еще не готово. А тут срочная задача, которая пересекается с новоделом? И что все комментировать, обратно разкомментировать? Действительно, зачем ему автоматика?
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Нет, использовать систему контроля версий. А не какие-то странные флаги непонятно где, и IF-ы что-то включающие или отключающие
Определять "метод запуска" нужно разве что для настройки путей, может скрытия системных тулбаров... А никак не для разделения функционала и отключения "неготовых" частей.


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
Ну тут уже много ответили по теме - можго и пофлудить

Вот фроде фокс уже помер ... но я до сих пор пользую (ну поскоку другого не изучил)))) но до сих пор как-то вот не нашлось надобности определять откуда же запущена прога - и почему так?
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Да хоть бы написать в "About о программе" имя EXE-файла, также, зная его имя, еще по его AGETFILEVERSION(... всякие его детали...
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
точно .... залез - глянул, ну да SYS(16,0), давно было )))) написал и забыл



Исправлено 1 раз(а). Последнее : AndyNigmatec, 26.08.17 09:24
Ratings: 0 negative/0 positive
Re: Как определить программа запущена из среды фокса или скопилировынный ехе-шник ?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
akvvohinc
Igor Korolyov
Да, глянул тут исходники, у меня и то и другое (и _VFP.StartMode и UPPER(JUSTEXT(SYS(16))) = "EXE") используется
Ну, вот - после этой темы UPPER() здесь можешь убрать.
1) Этому коду сто лет, зачем лезть туда где всё работает
2) В документации НЕ гарантируется что возвращаться будет в верхнем регистре, а я стараюсь следовать документации там где она не врёт явно Тут ещё могут любители COLLATE=RUSSIAN "подсказать" что дескать обычное сравнение то не чувствительно к регистру...


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 23 (Гостей: 23)

© 2000-2024 Fox Club 
Яндекс.Метрика