powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / откуда вызвана программа ?
6 сообщений из 6, страница 1 из 1
откуда вызвана программа ?
    #32791496
m_a_r_i_n_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прог1 вызывается из прог2 или прог3
как в самой прог1 указать откуда он в данный момент вызван - из прог2 или прог3?
такой метод
*****************
func прог2
public a
a="прог1"

func прог1
if a="прог1"
endif
*****************
наверное не единственный ?
cпасибо
...
Рейтинг: 0 / 0
откуда вызвана программа ?
    #32791510
m_a_r_i_n_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в предыдущем сообщении ошибка
надо

прог1 вызывается из прог2 или прог3
как в самой прог1 указать откуда он в данный момент вызван - из прог2 или прог3?
такой метод
*****************
func прог2
public a
a="прог2"

func прог1
if a="прог2"
endif
*****************
наверное не единственный ?
cпасибо
...
Рейтинг: 0 / 0
откуда вызвана программа ?
    #32791757
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM по функции PROGRAM([nLevel])
...
Рейтинг: 0 / 0
откуда вызвана программа ?
    #32791812
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А параметр передать нельзя?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
FUNCTION Prog1
=Prog2("Prog1")
ENDFUNC


FUNCTION Prog2
LPARAMETERS tcFromProg
IF TYPE("m.tcFromProg")="C" AND UPPER(m.tcFromProg)=="PROG1"
*
ENDIF
ENDFUNC
...
Рейтинг: 0 / 0
откуда вызвана программа ?
    #32792394
Flex2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тебе способ через стек.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 Допустим,  стартовый модуль 0start.prg:
Public Array ga_Stask( 2 )
ga_Stask( 1 ) = "0start.fxp"
Local ln_Ptr
......
.....
&& тут можешь что нить проинициализировать
ln_Ptr =  2  
ga_Stask( 2 ) = "Main.fxp"
Do (ga_Stask(ln_Ptr))  with    2 

В модуле main.prg
parameter ln_Ptr
Cоответвенно  ты знаешь номер проги в стеке выполнения,
а именно ga_Stask( ln_Ptr- 1 ), а это в данном случае ga_Stask(  1 ) ="0start.fxp"

И вообще при таком, стековом вызове подходе у тебя:
 1 . Известа вся цепь вызовов
 2 . Нет возвратов из процедурных файлов, что позволет использовать в любом месте программы общие функции, классы.
...
Рейтинг: 0 / 0
откуда вызвана программа ?
    #32792458
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Flex2 & Others!

Зачем городить свои стеки, если можно запросто получить собственно фоксовый?
Начиная от
[SRS]FOR ln1 = 1 TO PROGRAM(-1)
? m.ln1, PROGRAM(m.ln1)
ENDFOR[/SRS]
И заканчивая ASTACKINFO(laStack) - сорри не припомню в какой версии
появилось.
Ну а КОНКРЕТНО на изначальный вопрос, самое простое наверное
[SRS]PROGRAM(PROGRAM(-1) - 1)[/SRS]

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / откуда вызвана программа ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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