Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Скрипт  дерево вызовов в процедуре. (число прочтений - 7923 )
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Скрипт  дерево вызовов в процедуре.
07. Марта 2007 :: 09:32
Печать  
Даный пост продолжние:
http://www.1cpp.ru/forum/YaBB.pl?num=1170062775.
Так как название было плохим (не однозначным) дал другое название.
Ошибка которая была замечена исправлена в том посте исправлена.

Назначение: Упростить анализ  незнакомых модулей.
Вы водит какие процедуры вызываються в процедуре, далее какие вызываються в них...
Установка:  
Сперва установить плагин OpenConf to VBA:
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=1003&lid=4167
Затем копируем файл:
openconf.ocp в каталог программы (BIN)
Если есть проблемы с установкой то пишите постараюсь написать все более подробно.

Как начать работать: Из  Модуля надо вызвать ShowMacrosDialog  плагина  oc2vba
(у меня повешено на Ctr+7).
И выбрать Макрос TreeMethods.
В результате  в Combox будет содержаться:
все функции и процедуры данного модуля.
Дерево  TreeView1 будет содержать дерево их вызовов.
Списки ListBox1, ListBox2 будут пустыми.
Как работать:
При нажатии на метод в дереве  происходит обновление
ListBox1, ListBox2
Аналогичное происходит при выборе метода в  Combox
Сделать чтобы при при изменении в  ListBox1 происходило выделение нужного узла в дереве.
Описание основных элементов.
Состоит из пяти основных элементов
1)      Combox–содержит все процедуры
(находить под надписью название метода )
2)      ListBox1- содержит список имен функций и процедур которые вызываются в данной процедуре
(находить под надписью  вызываются процедуры)
3)      ListBox2- содержит список имен функций и процедур которые вызывают  данную процедуру
(находить под надписью используется в процедурах)
4)      TreeView1 –содержит Дерево   вызовов
(находить над кнопкой:  построить дерево модулей)

Как это выглядит:

  

Primer.JPG ( 50 KB | Загрузки )
Primer.JPG
Наверх
 
IP записан
 
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Re: Скрипт  дерево вызовов в процедуре.
Ответ #1 - 07. Марта 2007 :: 09:35
Печать  
Как это работает:
1) Поиск имен процедур их начал и концов
Процедура - ListMetods
а) разбиваем на строки
б) поиск  и определение начал процедур
в) поиск  и определение концов процедур
что можно  доделать в процедуре:
а) рассмотреть случай, когда это скрипт  
б) ускорение за счет того что сразу выделяем имена процедур,
проблема в том что надо узнать номер строки при поиске с подошью регуляторного выражения.
(как это сделать я не знаю).
в) учет глобального модуля (пока выводит вызовы только в рамках анализируемого модуля).
2) Поиск какие вызовы есть в той или иной процедуре
Vmetod
а) разбиваем на строки
б) поиск вызовов методов и определение в какой процедуре она вызываеться
3) Построение Дерева
TreeViewCreat
а) сперва создаем начало дерева
б) затем рекурсивно строим дерево  NewUrov()
4) Вспомогательные функции
а) найти номер  элемента  в списке NomMet(Naim)
нужна для того чтобы по имени в элементе диалога определить номер процедуры.
б) узнать нет ли зацикливания  в дереве Function RodEst(Node, met, viv)
'если viv=1 то выводим информацию об узлах участвующих в рекурсии
5) Вспомогательные функции интерфейса
а) UserForm_Activate – вызывается при начале работы заполняет и выводит основные элементы. В ней вызываются 1), 2) и 3).
б) CommandButton1_Click() – обновляет список методов вызывается 1), 2) и 3).
в) CommandButton3_Click()– обновляет дерево вызывается 3).
г) TreeView1_NodeClick-  выделяем нужный узел в списке методов и обновляет ListBox1, ListBox2
д)   ListBox1_Click  переходим на то место где метод вызывается функция из списка.
е)   ListBox2_Click   переход к нужно функции в списке (перейти в дереве не получилось)
ж)  Modul_Change  при изменении выбранного  метода обновляет ListBox1, ListBox2.
Сам скрипт:
  

openconf.zip ( 35 KB | Загрузки )
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Скрипт  дерево вызовов в процедуре.
Ответ #2 - 07. Марта 2007 :: 19:51
Печать  
чтобы не подменять файл openconf.ocp в каталоге программы(у каждог там может быть чтото своё), предлагаю делать так:
создаем в bin\config папку oc2vba_Projects, и ложим в Config\Scripts
скрипт oc2vba.vbs следующего содержания


Код
Выбрать все
'========================================================================
Private Sub Init
	On Error Resume Next
	Set oc2vba = Plugins("oc2vba")
	if oc2vba Is Nothing Then
		message "Плагин ""oc2vba"" не загружен", mExclamation
		Scripts.UnLoad SelfScript.Name
		Exit Sub
	End If
	on error goto 0

	Set fso = CreateObject("Scripting.FileSystemObject")
	Set files = fso.GetFolder(bindir & "\Config\oc2vba_Projects").Files
	For Each file in files
		oc2vba.LoadProject file.path
	Next
End Sub

'========================================================================
Init()
 



таким образом загружаем все проэкты которые лежат в этой папке
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Скрипт  дерево вызовов в процедуре.
Ответ #3 - 09. Марта 2007 :: 07:01
Печать  
Для работы плагина требуется VBA движок, кто-нить может им поделиться?
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Скрипт  дерево вызовов в процедуре.
Ответ #4 - 09. Марта 2007 :: 07:15
Печать  
Phoenix писал(а) 09. Марта 2007 :: 07:01:
Для работы плагина требуется VBA движок, кто-нить может им поделиться?


Присоединяюсь к вопросу...

ЗЫ Те программы которые советуют в описании OC2VBA найти не удалось - а более поздние - такие как Visio 2003 почему то библиотеки движка не содержат (по крайнее мере мне найти не удалось)
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Скрипт  дерево вызовов в процедуре.
Ответ #5 - 09. Марта 2007 :: 09:55
Печать  
у меня APC с 12-м корелом поставилась
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Re: Скрипт  дерево вызовов в процедуре.
Ответ #6 - 09. Марта 2007 :: 09:59
Печать  
Phoenix писал(а) 09. Марта 2007 :: 07:01:
Для работы плагина требуется VBA движок, кто-нить может им поделиться?

Могу попытаться поделиться. Чем конкретно нужно поделиться ?
Движок у меня в инсталяке Corel Designer 10. Кто какую программу(или способ) посоветует
что бы виделить движок из инсталяка. (инсталяк занимает 125 мегов).
Опишу список файлов в каталоге VBA6:
02.11.2001  10:21           540 672 APC63.dll(предпол. относиться к VBA)
20.04.2001  18:10           462 901 link.exe
20.04.2001  18:10           180 276 mspdb60.dll
15.07.2000  15:13            14 096 vb6debug.dll
20.04.2001  18:10            95 504 vba6mtrt.dll(предпол. относиться к VBA)
25.08.1998  20:08           466 944 VBACV10.DLL(предпол. относиться к VBA)
25.08.1998  20:08           471 040 VBACV10D.DLL(предпол. относиться к VBA)
25.08.1998  20:09         1 044 480 VBACV20.DLL(предпол. относиться к VBA)
03.07.2003  15:19         2 502 656 VBE6.DLL
03.07.2003  14:31            45 056 VBE6EXT.OLB

Две ссылки на где они лежать сети.
http://www.dll.ru/dll/A/14.html (http://www.dll-files.ru/dll/a_22.html).
http://www.dll.ru/dll/V.html
Если с помошью этой информации кому то удалось установить
среду VBA  то путь отпишеться.
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Скрипт  дерево вызовов в процедуре.
Ответ #7 - 09. Марта 2007 :: 14:47
Печать  
С помощью приведенных выше библиотек с наскока не получилось

Будем пробовать ставить Corel 12 ... Хотя кроме данного вопроса он мне и не нужен будет никогда...

  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Скрипт  дерево вызовов в процедуре.
Ответ #8 - 09. Марта 2007 :: 18:16
Печать  
я вообще из корела тока движок vba поставил. со всего остального галки снял
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Скрипт  дерево вызовов в процедуре.
Ответ #9 - 09. Марта 2007 :: 21:24
Печать  
Phoenix писал(а) 09. Марта 2007 :: 18:16:
я вообще из корела тока движок vba поставил. со всего остального галки снял

Поставилось из дистрибутива Corela 12, как и советовалось...

как говорится  Phoenix'у респект, а точнее спасибо...

2nikolka
- в дереве имена элементов доступны на изменение и соответственно поэтом уже процедуры в модуле не позиционируются
- обратил внимание что при загруженном OColorer и выборе определенной процедуры наблюдается следующая картина

  

test_tree_module.jpg ( 28 KB | Загрузки )
test_tree_module.jpg

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Скрипт  дерево вызовов в процедуре.
Ответ #10 - 10. Марта 2007 :: 03:24
Печать  
Цитата:
- обратил внимание что при загруженном OColorer и выборе определенной процедуры наблюдается следующая картина


качал версию колорера 0.9.0.1 с первого поста той ветки?
а вобще колорер ещё достаточно глючен в плане прорисовки поэтому я неудивляюсь  Улыбка
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
The gray Cardinal
Full Member
***
Отсутствует



Сообщений: 159
Зарегистрирован: 17. Июня 2006
Пол: Мужской
Re: Скрипт  дерево вызовов в процедуре.
Ответ #11 - 11. Марта 2007 :: 17:29
Печать  
А у меня нет под рукой Corel'а...
Есть Visio 2003, в инсталляторе выбрал только VBA, однако APC не поставились.

Нашел Corel и поставил. Выходит, Corel - пока единственный известный мне способ поставить APC...
« Последняя редакция: 14. Марта 2007 :: 19:38 - The gray Cardinal »  
Наверх
www  
IP записан
 
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Re: Скрипт  дерево вызовов в процедуре.
Ответ #12 - 10. Июля 2008 :: 16:48
Печать  
Продолжение по данной темесмотреть на:
http://infostart.ru/profile/11000/projects/1676/
Добавил возможность вызвать скрипт из Word.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать