Как я могу каталогизировать, индексировать и /или распечатывать исходный код VB6, с каждой подпрограммой /функцией на странице?

Как я могу каталогизировать, индексировать и /или распечатывать исходный код VB6 с каждой подпрограммой или функцией на отдельной странице? Я хотел бы сделать это с бесплатными или включенными надстройками Visual Studio, если это возможно, но я не против написать что-то сам. Я знаком с «Microsoft Office Visual Basic для расширяемости приложений», и кажется, что VB6 имеет аналогичный модуль, который может позволить мне просто «Для каждого» просмотреть коллекцию модулей кода и выбросить сабвуферы в принтер по одному время. Это может занять 10-15 строк кода.

Моим первым приоритетом является печать, желательно с каждой подпрограммой /функцией на отдельной странице, но с обычной функцией печати в IDE весь код выполняется вместе в одной длинной распечатке. Затем, после этого, я хотел бы создать индекс /toc для имен каждой подпрограммы, функции, переменной и константы в каждом VBP. У нас есть Visual Studio 6.0 Enterprise Edition, но, похоже, в ней нет ничего, что могло бы сделать что-то подобное.

Вы можете смеяться и спрашивать: «Почему VB6 .. ?? LOL !!». Это потому, что мне было поручено обновление и изменение исходного кода VB6 большой программной системы, которая работает на заводе. Он находится в изолированной сети без связи с внешним миром, и он работает нормально в течение 14 лет, но теперь они хотят начать обновление некоторых вещей. Система состоит из множества файлов VBP, каждый из которых содержит множество модулей и форм.

Редактировать. Я пытался найти ответ на этот вопрос, но это оказалось невозможным. Все, что я получил, это закодированные примеры печати из приложений, написанных на VB6, а не печати исходного кода из IDE.

7 голосов | спросил spinjector 8 ThuEurope/Moscow2016-12-08T06:49:37+03:00Europe/Moscow12bEurope/MoscowThu, 08 Dec 2016 06:49:37 +0300 2016, 06:49:37

4 ответа


0

Вам не нужно правильно анализировать код, чтобы удовлетворить ваши требования. Напиши что-нибудь сам. Вы можете выводить на принтер или в HTML-файлы. Я сделал это один раз, он работал нормально.

Файлы исходного кода - это просто текстовые файлы. Читайте файлы построчно, печатая каждую строку. Начинайте новую страницу каждый раз, когда вы видите «end sub» или «end function» или «end property». Таким образом, каждый метод будет запускаться на отдельной странице. Файлы FRM имеют определения элементов управления вверху, вы можете пропустить это, просто ища строку, содержащую только «конец». Код начинается там.

Если вы много работаете с VB6, я также рекомендую получить отличное дополнение в MZ Tools . Имеет отличные инструменты поиска. К сожалению, уже не бесплатно, но стоит денег ИМХО. У меня нет ссылок с продавцом.

ответил MarkJ 10 SatEurope/Moscow2016-12-10T01:07:51+03:00Europe/Moscow12bEurope/MoscowSat, 10 Dec 2016 01:07:51 +0300 2016, 01:07:51
0

Написать надстройку. Это гораздо проще, чем вы думаете.

Возьмите книгу Стивена Романа «Разработка надстроек Visual Basic» (O'Really, 1999, ISBN 1-56592-527-0).

ответил Herb 8 ThuEurope/Moscow2016-12-08T10:39:56+03:00Europe/Moscow12bEurope/MoscowThu, 08 Dec 2016 10:39:56 +0300 2016, 10:39:56
0

Разобрать модуль для процедур и функций сложно , поверьте мне . Особенно с такими продолжениями строк:

 _
Public _
Sub _
Foo() ' _
End Sub
 _
End _
 _ 
Sub _

Кроме того, свойство может заканчиваться символом End Property, но также и End Function или End Sub

К счастью, VBIDE для VB6 имеет больше классов и методов для работы с проектами VB, чем версия VBA VBIDE.

Одним из них является свойство CodePane.Members, которое возвращает коллекцию всех идентификаторов (хотя, я думаю, оно не содержит Type и Enum идентификаторы, но они объявлены в раздел объявлений модуля в любом случае) в модуле.

 введите описание изображения здесь

И каждый член предоставляет различные свойства, включая его местоположение в модуле: введите описание изображения здесь

Если вы заинтересованы в более подробном разборе и в полнофункциональной надстройке для IDE, вам следует взглянуть на Rubberduck-VBA на GitHub (я участник) , В настоящее время он работает с хостами VBA, но VB6 находится на дорожной карте. Он имеет один из самых надежных доступных анализаторов VB и имеет открытый исходный код.

ответил ThunderFrame 29 ThuEurope/Moscow2016-12-29T04:38:54+03:00Europe/Moscow12bEurope/MoscowThu, 29 Dec 2016 04:38:54 +0300 2016, 04:38:54
0

Вы можете использовать инструмент поиска программного кода, который индексирует языковые элементы для быстрого поиска и поиска. Это облегчит вам поиск интересующего кода и даже не печатает всю эту бумагу, потому что вместо этого вы просто ищите код.

Наша поисковая система исходного кода знает лексические элементы многих языков, в частности, включая VB6. Он читает базу исходного кода (тысячи файлов) и создает индекс для быстрого поиска элементов кода. Используя его графический интерфейс, вы можете писать запросы в терминах языковых элементов для поиска фрагментов кода, таких как:

     S=*Login*

для поиска (только) строк, содержащих текст «Логин» (с использованием простых символов подстановки), или

     'SUB' I=/[Aa]ccount.*/

, который найдет все подпрограммы, имя которых начинается с «account» независимо от заглавной буквы (полное регулярное выражение) или

       'IF'  ... N>17<35

чтобы найти операторы IF, которые используют любое значение от 17 до 35 («..» означает «рядом»). Элемент N запроса позволяет быстро и легко найти любое использование константы.

Действительно мощным свойством языка запросов является "а не". Это позволяет создать неаккуратный запрос, который находит «слишком много», а затем исключить «слишком много»:

       I '+' I  - I=xyz

находит две добавленные переменные, которые не включают переменную xyz.

Вы можете щелкнуть любой список совпадений, и текст кода появится в окне графического интерфейса. Нет необходимости бумаги.

Поскольку он знает лексическую структуру каждого языка, его не смущают пробелы, разрывы строк, комментарии или даже строки, содержащие код, такой как текст.

ответил Ira Baxter 8 ThuEurope/Moscow2016-12-08T13:27:43+03:00Europe/Moscow12bEurope/MoscowThu, 08 Dec 2016 13:27:43 +0300 2016, 13:27:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132