|
Как программно получить данные которые были переданы в вызывающую процедуру? | ☑ | ||
---|---|---|---|---|
0
D_Pavel
16.01.13
✎
10:33
|
Одна процедура вызывает вторую. Во второй процедуре нужно получить значения переменных или переданных параметров первой процедуры.
В отладчике это легко. А программно как? |
|||
1
DrShad
16.01.13
✎
10:34
|
передать их в ту процедуру где они нужны, коли они не глобальные
|
|||
2
ДенисЧ
16.01.13
✎
10:34
|
ммм.. передать эти параметры как параметры второй процедуры?
|
|||
3
Maxus43
16.01.13
✎
10:38
|
как может быть в отладчике легко, а в коде не легко?
|
|||
4
Starhan
16.01.13
✎
10:39
|
(3) вселенская тайна.
|
|||
5
acsent
16.01.13
✎
10:40
|
(3) как раз можно.
Открыть стек вызовов, посмотреть значения |
|||
6
cw014
16.01.13
✎
10:40
|
После третьей "передачи параметров процедуре" у меня моск сломался
|
|||
7
D_Pavel
16.01.13
✎
10:41
|
В (0) частный случай.
А если это одна и та же процедура, вызывает сама себя рекурсивно много раз. И нужно на уровне вложенности "N" вытащить параметры из уровня "D". |
|||
8
D_Pavel
16.01.13
✎
10:41
|
(3) Ну мне не легко. А тебе легко?
|
|||
9
Starhan
16.01.13
✎
10:43
|
(7) давай нормальный пример, пока не понятно чем не подходят параметры методов.
|
|||
10
Starhan
16.01.13
✎
10:43
|
и вообще похоже на проблему в архитектуре :)
|
|||
11
Deniskind
16.01.13
✎
10:44
|
Два параметра - ссылка на массив и уровень вложенности не подойдет?
|
|||
12
D_Pavel
16.01.13
✎
10:45
|
(9) Что именно не понятно? Вроде в (0) всё проще некуда расписал
|
|||
13
Reset
16.01.13
✎
10:46
|
(0) Программно никак, параметры процедуры видны только в ней.
Только передавать параметры явно, в том или ином виде. |
|||
14
Maxus43
16.01.13
✎
10:46
|
(8) код покажи, или пример нормальный. Если внутри процедуры2 ты отладчиком видишь значение нужное - где проблема его в коде получить?
|
|||
15
Reset
16.01.13
✎
10:46
|
(14) Не тормози, он переключает контекст с помощью стека вызовов :)
|
|||
16
D_Pavel
16.01.13
✎
10:46
|
(11) там скорее не массив, а ветвистая структура со вложенными структурами получается.
|
|||
17
D_Pavel
16.01.13
✎
10:47
|
(14) Понятно. Очень жаль.
|
|||
18
D_Pavel
16.01.13
✎
10:48
|
+(17) это не туда. Для (13)
|
|||
19
Maxus43
16.01.13
✎
10:48
|
(15) хорошо, пойду кофя пить
|
|||
20
Starhan
16.01.13
✎
10:49
|
Давай пример. А про (0)уже сказали либо передаешь параметры дальше по процедурам. Либо переменные модуля и т.п.
|
|||
21
Deniskind
16.01.13
✎
10:51
|
(16) Тогда ДеревоЗначений
|
|||
22
D_Pavel
16.01.13
✎
10:53
|
(20) Зачем тебе пример?
|
|||
23
ДенисЧ
16.01.13
✎
10:54
|
(22) а узнать, что сейчас думает президент Гондураса, в этот момент программно не надо?
|
|||
24
D_Pavel
16.01.13
✎
10:55
|
(23) что за бред?
|
|||
25
D_Pavel
16.01.13
✎
10:56
|
(21) можно. Но сложно
|
|||
26
ДенисЧ
16.01.13
✎
10:57
|
(24) бред - это то, что ты несёшь.
|
|||
27
D_Pavel
16.01.13
✎
10:58
|
(26) Где именно?
|
|||
28
eklmn
гуру
16.01.13
✎
10:58
|
(22)че за бред ?
|
|||
29
D_Pavel
16.01.13
✎
10:58
|
(28) Просили пример.
|
|||
30
eklmn
гуру
16.01.13
✎
10:58
|
чувак по ходу не познал циклы?
|
|||
31
Rovan
гуру
16.01.13
✎
10:58
|
(11) поддерживаю
|
|||
32
D_Pavel
16.01.13
✎
10:59
|
(30) цыкл тебя познал. Иди отсюда
|
|||
33
Maxus43
16.01.13
✎
10:59
|
(22) тебе (11) в помощь. Но ИМХО - не должен алгоритм опираться на данные, не относящиеся к данной итерации
|
|||
34
Starhan
16.01.13
✎
10:59
|
(29) просили нормальный пример :)
|
|||
35
Rovan
гуру
16.01.13
✎
11:00
|
(22)
функция УУУУ(А, ПредА) Блин = А; А = А % 5; А = УУУУ(А,Блин); КонецФункции |
|||
36
D_Pavel
16.01.13
✎
11:00
|
(34) Этот самый простой.
(33) в (21) получше |
|||
37
Maxus43
16.01.13
✎
11:00
|
(36) да не суть
|
|||
38
eklmn
гуру
16.01.13
✎
11:02
|
(32) у тебя ошибка в голове
|
|||
39
Starhan
16.01.13
✎
11:02
|
(35) правильнее так :)
функция УУУУ(А, ПредА=Неопределено) Блин = А; А = А % 5; А = УУУУ(А,Блин); КонецФункции; но поскольку пример простой то и ответ простой. Все таки интересно что хочет автор |
|||
40
D_Pavel
16.01.13
✎
11:03
|
(35) А если нужно на несколько уровней выше получить, то придется много параметров передавать. Или массив параметров.
|
|||
41
Starhan
16.01.13
✎
11:03
|
(40) ну скажи зачем.....
дай пример с чем ты столкнулся |
|||
42
D_Pavel
16.01.13
✎
11:04
|
функция УУУУ(А, МассивА)
МассивА.Добавить(А); А = А % 5; УУУУ(А, МассивА); КонецФункции; Только вопрос: Массив не будет каждый раз копироваться и забивать память? |
|||
43
Maxus43
16.01.13
✎
11:04
|
(40) > (33). Пример алгоритма где это может требоваться есть? Опираться на предыдущие итерации? Рекурсия не для этого придумана, чтоб в 10-й итерации смотреть что было в 1-й
|
|||
44
Rovan
гуру
16.01.13
✎
11:05
|
(44) дык про массив же сразу сказали - см (11)
|
|||
45
D_Pavel
16.01.13
✎
11:05
|
(41) У меня в функции случается что параметр принимает определенное значение, и нужно проследить цепочку как это случилось.
|
|||
46
Rovan
гуру
16.01.13
✎
11:06
|
(42) нет...это ссылка на массив
|
|||
47
D_Pavel
16.01.13
✎
11:07
|
(44) Там про "Два параметра - ссылка на массив и уровень вложенности"
Да, слово массив тоже присутствует, но для другой цели |
|||
48
Rovan
гуру
16.01.13
✎
11:07
|
(+43) да... обычно так делают: рекурсией заполняют некий список (массив, деревозначений), а затем уже его обрабатывают
|
|||
49
D_Pavel
16.01.13
✎
11:07
|
(46) ок
|
|||
50
Rovan
гуру
16.01.13
✎
11:08
|
(47) в рамках твоей задачи цель только 1
|
|||
51
D_Pavel
16.01.13
✎
11:10
|
(48) У меня уже заполнена структура, ветвистая, с массивами структур и структурами структур.
Функция рекурсивно пробегает по этой структуре и копирует ее в другое хранилище. И на каком-то уровне вложенности по переданной подструктуре нельзя определить в каком месте первоначальной структуры мы находимся. |
|||
52
D_Pavel
16.01.13
✎
11:11
|
+(51) то есть нужно зная подструктуру получить ее родителя и дедушку и прапрадедушку.
|
|||
53
Reset
16.01.13
✎
11:14
|
Хранить в подструктурах родителя не подойдет?
|
|||
54
Reset
16.01.13
✎
11:15
|
+Это как дерево получится, но с произвольными наборами колонко в узлах
|
|||
55
Maxus43
16.01.13
✎
11:17
|
а тупо ТЗ не прокатит? индекс - вот тебе и номер цикла рекурсии
|
|||
56
D_Pavel
16.01.13
✎
11:19
|
(53) Сильно много переделывать. Много веток у структуры.
|
|||
57
D_Pavel
16.01.13
✎
11:19
|
(55) не
|
|||
58
D_Pavel
16.01.13
✎
11:23
|
(46) Блин, не подходит. В параллельных ветвях рекурсии будут попадать данные из других веток.
Придется каждый раз новый массив создавать. |
|||
59
D_Pavel
16.01.13
✎
11:26
|
Как вызывать процедуру чтобы массив передавался не ссылкой?
|
|||
60
acsent
16.01.13
✎
11:29
|
итого вывод: ты неправильно реализовал алгоритм изначально
|
|||
61
D_Pavel
16.01.13
✎
11:33
|
(60) о_О ничего себе какие выводы ты делаешь!
|
|||
62
Reset
16.01.13
✎
11:33
|
(59) Это называется дать намыленную веревку:
СЗ=Новый СписокЗначений; СЗ.ЗагрузитьЗначения(А); УУУУ(СЗ.ВыгрузитьЗначения()); // Будет передана копия массива |
|||
63
D_Pavel
16.01.13
✎
11:34
|
(62) точно
|
|||
64
Reset
16.01.13
✎
11:35
|
(61) Он правильные выводы делает. Когда для продолжения работы с алгоритмом внезапно потребовались нестандартные (даже кривые) методы, это значит требуется рефакторинг алгоритма.
|
|||
65
D_Pavel
16.01.13
✎
11:37
|
(64) алгоритм хороший. Просто нет методов для того чтобы его улучшить.
|
|||
66
D_Pavel
16.01.13
✎
11:42
|
+(65) просто хотелось сделать более информативные сообщения пользователю.
Вместо: "Не правильный номер дома (питнацать)" Хотелось: "Не правильный номер дома (питнацать) по улице (Ленина) в городе (Чемкент)" Ну да ладно, обойдутся. |
|||
67
Privalov
16.01.13
✎
11:48
|
(22) Бред!
|
|||
68
ДенисЧ
16.01.13
✎
11:48
|
(67) Баян! :-)
|
|||
69
D_Pavel
16.01.13
✎
11:53
|
(67) Просили пример, написал ))))
|
|||
70
Starhan
16.01.13
✎
11:55
|
(66) да полюбэ все реально, проблема у тя в архитектуре. эт я еще в (10) сказал
|
|||
71
D_Pavel
16.01.13
✎
11:57
|
(70) Да я видел, ты еще в (10) ошибся.
Никак не реально |
|||
72
D_Pavel
16.01.13
✎
11:58
|
Точнее нормальным способом не реально, только извращаться
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |