Переменные и методы класса выдают ошибку компиляции

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение and » 12.09.2016 16:19:36

Кстати, тут Graphviz упоминался. Сталкивался я с ним: Trac (вернее, один из плагинов) с его помощью визуализирует workflow.
Впечатления у меня не ахти: довольно капризный imho движок, не стОящий своего соотношения "функциональность/прожорливость".
Аватара пользователя
and
постоялец
 
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение Лекс Айрин » 12.09.2016 16:21:11

С индексами я бы был осторожнее, так как нам нужны именно имена модулей, а значит их откуда то надо получать для вывода в финальный файл. Или параллельно заводить файл соответствия индексов модулям. И да.. решить какой формат будет выходным.

Кроме того, по идее, атрибуты лучше задавать прямо при начале записи в файл, в зависимости от типа модуля. Например, подключенные в интерфейсе будут жирные зеленые, а в реализации красные штрих-пунктирные. Если уж хочется настройки атрибутов, то лучше их передавать в начале, получится типа контекст устройства. Или ты хочешь играть цветами выделяя разные пакеты?

Добавлено спустя 6 минут 31 секунду:
and писал(а):, чем с нуля свой ваять. Например:
Вид - "Зависимости модуля";
Пакет - "диаграмма пакетов".


Если честно, диаграмма пакетов так себе... и приводить ее в более пристойный вид будет тяжело. тем более, что в ней я не нашел модулей текущего проекта. (изучение библиотеки компонент это, конечно, хорошо, но обычно это нужно практически только в виде справки)

Добавлено спустя 5 минут 46 секунд:
Хотя нет, проект все же отображается, но полной связности нет.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3090
Зарегистрирован: 19.02.2013 16:54:51

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение zub » 12.09.2016 16:54:16

and
>>Впечатления у меня не ахти:
У меня разочарование наступило сразу с момента скачивания. для простых графов наверно подходит. на сложных выдает невнятные картинки. еще сложнее - не хватает терпения дождаться пока отработает. Это впечатление "слету", наверно можно научиться его "готовить"
Какие еще есть способы получить визуальную модель зависимостей программы, классов? я знаю только sparxsystems для дельфи

Лекс Айрин
Ты хочешь сделать 2 разных приложения? я думаю мы про одно говорим. Если одно - индексы самое то.
>>Или параллельно заводить файл соответствия индексов модулям
индекс это индекс модуля в этом массиве. такая форма представления графа.

>>И да.. решить какой формат будет выходным.
Тебе решать))
zub
долгожитель
 
Сообщения: 1800
Зарегистрирован: 14.11.2005 23:51:26

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение Лекс Айрин » 12.09.2016 17:46:07

zub писал(а):Ты хочешь сделать 2 разных приложения? я думаю мы про одно говорим.


Вот по этому лучше все заранее хорошенько обсудить. Тем более что квалификация у меня не ахти(((

zub писал(а):индекс это индекс модуля в этом массиве. такая форма представления графа.


Постой, а как же я получу имена модулей? ведь мне нужно будет отображать их, а не абстрактный номер. Ведь, в идеале, граф будет включать в себя и библиотечные модули.
Вообще, проще сделать три процедуры (или объекта) один создает текст с шапкой/подвалом, другой вставляет модули проекта, а третий добавляет связи.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3090
Зарегистрирован: 19.02.2013 16:54:51

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение zub » 12.09.2016 23:39:16

Лекс Айрин
Получается чтото такое http://svn.shamangrad.net/zcad/trunk/other/pudgb/
Название дурацкое, вчера эта абревиатура чтото значила, сегодня уже непомню что))
Пока интерфейса никакого, то что сканируется жестко захардкожено в _onCreate главной формы
Пока тренеруюсь на этом https://sourceforge.net/p/lazarus-ccr/s ... usjukebox/ 30 пас файлов, общим весом пол мегабайта.
Всё качаешь, правишь, пути, под свой скачаный cactusjukebox.
Запускаешь, жмешь scan, потом жмешь save - в мемо выводится инфа о просканированых исходниках. в "свободном" формате. А между символами CUT HERE 8x---------------------- в DOT формате, ее можно копипастнуть и скормить комунибудь.
скормленое еду выглядит так:
Изображение
скормленое графвизу выглядит так:
Изображение

в папке с примером 30 файлов, в грАфе 23, глюк это или некоторые файлы не проходят нигде в усес я еще не разбирался.

по файликам:
pudgb.lpi - болванка проекта
mainform.pas - временный гуй, с 2мя кнопками и мемо куда пока выводится результат
uoptions.pas - заготовка под грядущие опции сканера и писАлки. Пока только пути, название и опции
uscaner.pas - сканер, тут я хозяйничаю
uscanresult.pas - результат сканирования, структура которая будет результатом работы сканера и входными данными писалки
uwriter.pas - модуль который будет писать результат. тебе и карты в руки

зы. в писалке я "применил" столь "любимые" мной s:=s+'?' в цикле)) надеюсь это временно))

зыы. "Анализ" своих же исходников (файлики описаные чуток выше)))
ед:
Изображение
графвиз:
Изображение
Графвиз молодец! прям как надо рисует, оправдался в моих глазах)) Ед похуже, наверно я незнаю какую то опцию

зыыы. "Анализ" lexeditor. айяйяй! сплошние цыклы, образец как нинадо))
Изображение

LSEditor тоже тудаже
Изображение

Добавлено спустя 4 часа 7 минут 15 секунд:
чтоб запомнить - вылетает на конструкциях вида Str(D:0:Decimals,S)

иде фрипаскаля (прогнал хаками, правя "ошибки" в иде)
Изображение

ктонить может подсказать "академически правильную" большую программу?
zub
долгожитель
 
Сообщения: 1800
Зарегистрирован: 14.11.2005 23:51:26

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение Лекс Айрин » 13.09.2016 10:03:03

zub писал(а):зыыы. "Анализ" lexeditor. айяйяй! сплошние цыклы, образец как нинадо))


Я в курсе. Сейчас ищу замену мемо, а по хорошему, конечно, надо убирать циклы с main... это, в основном, не тяжело... просто немного муторно. И итоговая прога, с большой долей вероятности, будет работать медленней. Ибо эти циклы нужны для прямого доступа к компоненту редактору. А так нужно заводить временные переменные, опрашивать их в таймере... в общем, куча сахару(((

Добавлено спустя 4 часа 55 минут 32 секунды:
zub писал(а):Тебе решать))


Предлагаю, для упрощения, пока остановиться на tgf:
1) В нем нет координат, а значит проще формировать.
2) Это самый простой формат, а значит быстрее будет работать.
3) Более сложный метод можно будет добавить позднее.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3090
Зарегистрирован: 19.02.2013 16:54:51

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение zub » 13.09.2016 17:01:24

>>Предлагаю, для упрощения, пока остановиться на tgf:
Хорошо. По координатам всеравно лучше чем ед-графвиз не сделать
zub
долгожитель
 
Сообщения: 1800
Зарегистрирован: 14.11.2005 23:51:26

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение Лекс Айрин » 13.09.2016 18:19:46

zub, если честно, то не думаю, что они вообще нужны. Все равно, в результате они потом будут меняться при смене режима отображения. И, да... автоматическая расстановка линий (да и блоков) иногда подхрамывает.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3090
Зарегистрирован: 19.02.2013 16:54:51

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение zub » 13.09.2016 19:18:33

В идеале конечно внутри pudgb больше информации для построения правильного графа - например используя только interface uses можно разбить граф вертикально по слоям, используя папку (или какойто атрибут принадлежности файла) можно разбить горизонтально по "предназначению" - но это получится целая научная работа))
Имхо важнее
-граф типов данных - классы, объекты
-настройки фильтрации попадания в граф
-импорт настроек путей из lpi
-анализ графа и выявление всех циклов

Кстати чем можно проанализировать граф на предмет наличия циклов. В еде вижу только параметр tools\analyzegraph\topology\directedcyclic типа боолеан. сами циклы предлагается искать глазами?
zub
долгожитель
 
Сообщения: 1800
Зарегистрирован: 14.11.2005 23:51:26

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение Лекс Айрин » 13.09.2016 20:18:31

zub писал(а):Имхо важнее
-граф типов данных - классы, объекты
-настройки фильтрации попадания в граф
-импорт настроек путей из lpi
-анализ графа и выявление всех циклов


Сначала, надо просто построить граф. Потом уже можно будет сменить формат и добавить типы узлов (это, в принципе, не так уж и сложно). Впрочем, можно попытаться и забить на местоположение и тупо использовать сетку координат .... все равно, потом идет автоматическое перестроение.

zub писал(а):Кстати чем можно проанализировать граф на предмет наличия циклов. В еде вижу только параметр tools\analyzegraph\topology\directedcyclic типа боолеан. сами циклы предлагается искать глазами?


Видимо, да.
Имхо, проще самим проверять ветви на наличие предков. Если в ветвях есть хоть один предок, то это цикл. Заодно и увидим зацикленную часть. Так как связи однонаправлены, то иные отношения мешать не будут. Единственный минус -- потребуется процедура обхода дерева и буфер пройденных вершин. Думаю, циклы до 10-20 модулей можно будет построить.

Кстати, возможно придется как-то выделять объекты в модулях проектах.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3090
Зарегистрирован: 19.02.2013 16:54:51

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение zub » 13.09.2016 20:25:40

>>Сначала, надо просто построить граф.
В смысле? граф построен. структура описаная в uscanresult чем тебе не граф?
zub
долгожитель
 
Сообщения: 1800
Зарегистрирован: 14.11.2005 23:51:26

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение Лекс Айрин » 13.09.2016 20:44:39

zub, я намного не правильно выразился... Я имел ввиду записанный граф в файле... впрочем, немного медитации позволит и начать на более высоком уровне. Я уже вижу где в итоговом файле связи, где атрибуты и где местоположение... больше всего затыков с последним. Но вроде бы ничего особо сложного... думаю, можно начинать программировать в черновую.

Кстати,.. по svn у меня не получилось стянуть проект -- пришлось скачивать по одному.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3090
Зарегистрирован: 19.02.2013 16:54:51

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение zub » 13.09.2016 21:00:52

Это не дело, потом свои изменения будешь мне слать? а мои изменения перекачивать?))
Сделай черепахой чекоут в нужную папку с адреса
http://svn.shamangrad.net/zcad/trunk/other/pudgb/
или в комстроке
svn co http://svn.shamangrad.net/zcad/trunk/other/pudgb/ pudgb
находясь в директории где есть (или будет создана) директория pudgb
zub
долгожитель
 
Сообщения: 1800
Зарегистрирован: 14.11.2005 23:51:26

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение Лекс Айрин » 13.09.2016 21:25:39

ок. Все готово. Для того и заметил. (слитую ранее версию стер для удобства скачивания). (кстати, пользуюсь вариантом с комстрокой, а черепахи у меня нет)
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3090
Зарегистрирован: 19.02.2013 16:54:51

Re: Переменные и методы класса выдают ошибку компиляции

Сообщение zub » 14.09.2016 04:57:20

Приделал простенький импорт lpi, полноценный приделать не получится - нет возможности решить макросы в настройках путей. Возможно стоит не заморачиваться с импортом путей поиска, а тупо обискать все папки вглубь от "стартового" файла
Убрал лишнее в выводе, парсер выводит только ошибки, писалка только описание графа для вставки в графвиз.

Если парсер глючит на какомто файле проекта - файл (и всё что он усес) в граф не попадает. надо фиксить fcl-passrc чтоб ошибок было какможно меньше.
Изза "ошибок" которые "нашел" fcl-passrc граф зкада содержит всего 125 узлов, тогда как этотже граф из пасдока содержит 315 узлов (пасдок также включает узлы исходников которых он не нашел например classes, я такие пока не включаю)
Ошибки восновном на генериках и на отсутствии полного описания функций в имплементации, хотя это можно в режиме делфи
zub
долгожитель
 
Сообщения: 1800
Зарегистрирован: 14.11.2005 23:51:26

Пред.След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru