Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по PROGRAM() / 10 сообщений из 10, страница 1 из 1
16.02.2009, 10:58
    #35819024
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по PROGRAM()
Вопрос по поводу PROGRAM(). В ней надо задать уровень вложенности выполняемой программы если ничего не задавать то покажет ту которая выполняеться на данный момент если 0 или 1 то основную программу. Вопрос тако у меня выполняеться prg, в ней выполняеться процедура и PROGRAM() выдает мне имя процедуры а prg уже приходиться искать вручную, как мне определить уровень вложенности, чтобы показывало имя prg?
...
Рейтинг: 0 / 0
16.02.2009, 11:13
    #35819079
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по PROGRAM()
еще раз по-русски задайте вопрос.
что Вы желаете отследить с помощью функции, где и для каких целей?
напишите:
имею то-то и то-то ..,
хочу чтобы ...
...
Рейтинг: 0 / 0
16.02.2009, 11:28
    #35819136
-=AlexiS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по PROGRAM()
Program(-1) выдает текущий уровень

это откровение я почерпнул из хелпа - так что иногда стоит его читать , перед тем как спрашивать.

Так что имея в наличии текущий уровень - стройте цепочку вызовов хоть до самого "верха"
...
Рейтинг: 0 / 0
16.02.2009, 11:36
    #35819153
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по PROGRAM()
прошелмимоеще раз по-русски задайте вопрос.
что Вы желаете отследить с помощью функции, где и для каких целей?
напишите:
имею то-то и то-то ..,
хочу чтобы ...

Да хочу отследить где происходит ошибка.
Имею - sumiznos.prg в ней procedure avtospisanie при возникновении ошибки в процедуре program() выводит название процедуры avtospisanie , но так как у меня куча разных prg то приходиться искать в какой же prg находиться процедура avtospisanie
Хочу - чтобы показывало prg в которой находиться процедура с ошибкой, но для этого в program() нужно указать ее [nLevel] - PROGRAM([nLevel]). Вот собственно и не пойму как узнать этот [nLevel] программно?
...
Рейтинг: 0 / 0
16.02.2009, 11:43
    #35819177
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по PROGRAM()
-=AlexiS=-Program(-1) выдает текущий уровень

это откровение я почерпнул из хелпа - так что иногда стоит его читать , перед тем как спрашивать.

Так что имея в наличии текущий уровень - стройте цепочку вызовов хоть до самого "верха"

Да спасибо, так и делал но выдавало ошибку, но теперь уже разобрался ))
...
Рейтинг: 0 / 0
16.02.2009, 11:52
    #35819206
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по PROGRAM()
on error do ddd with programm()

procedure ddd
lparam tcProgramm

значение функции нужно передавать в процедуру обработки ошибки,
если Вы поступаете иначе, то нужно переделать
...
Рейтинг: 0 / 0
16.02.2009, 11:58
    #35819227
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по PROGRAM()
Alex-ZZZ
astackinfo()
...
Рейтинг: 0 / 0
16.02.2009, 12:07
    #35819265
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по PROGRAM()
прошелмимоon error do ddd with programm()

procedure ddd
lparam tcProgramm

значение функции нужно передавать в процедуру обработки ошибки,
если Вы поступаете иначе, то нужно переделать

Вобщем все равно чтото не то. Делаю я так

on error DO ERR with error(),program(-1),program(),message(),message(1),lineno()


PROCEDURE ERR
PARAMETERS er,prn,pr,mesag,mesag1,lin
pr1=PROGRAM(prn)
lin=ALLTRIM(STR(lin,15))
sod = "ОШИБКА!!! PR1+", "+PR+", "+", "+mesag+", "+", "+lin
D=MESSAGEBOX(sod,48)
IF D=1
RETURN TO pr
EXIT
ENDIF
ENDPROC

Но pr1 который должен выводить название текуще выполняемой программы выдает - "ON...". Объясните пожалуйста почему?
...
Рейтинг: 0 / 0
16.02.2009, 12:25
    #35819314
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по PROGRAM()
Все разобрался вместо program() нужно использовать sys(16). Всем спасибо за помощь.
...
Рейтинг: 0 / 0
16.02.2009, 12:27
    #35819325
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по PROGRAM()
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
on error DO ERR with error(),program(),program(),message(),message( 1 ),lineno()

do tttt
return 


procedure tttt

a= 1 
b= 2 

kk=c

return 


PROCEDURE ERR
lPARAMETERS er,prn,pr,mesag,mesag1,lin
lin=ALLTRIM(STR(lin, 15 ))
sod = "ОШИБКА!!! в программе " + prn + ", "+PR+", "+", "+mesag+", "+", "+lin
D=MESSAGEBOX(sod, 48 )

check_stack()



IF D= 1 
	RETURN TO pr
ENDIF 

ENDPROC 


procedure check_stack
local laStack[ 1 ], lcStack
astackinfo(laStack)
lcStack = ""
for lnRow = alen(laStack,  1 )- 2   to  1  Step - 1 
	lcStack = lcStack + "Исп.метод:   (" + transform(laStack[lnRow, 2 ]) + ")      " +  transform(laStack[lnRow, 3 ]) + chr( 13 )+ chr( 10 ) + ;
						"Строка:      " + transform(laStack[lnRow, 5 ]) + chr( 13 ) + chr( 10 ) + ;			
						"Команда:     " + alltrim(transform(laStack[lnRow, 6 ])) + chr( 13 )+ chr( 10 ) + ;
						chr( 13 )+ chr( 10 )
endfor
messagebox(lcStack)
return 
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по PROGRAM() / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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