如何编辑,索引和/或打印VB6源代码,以及页面上的每个子/函数..?

时间:2016-12-08 03:49:37

标签: visual-studio vb6 visual-studio-6 vbide

如何在自己的页面上为每个子或函数编目,索引和/或打印VB6源代码..?如果可能的话,我想使用免费或包含的Visual Studio插件进行此操作,但我并不反对自己写一些东西。我熟悉" Microsoft Office Visual Basic for Applications Extensibility",似乎VB6有一个类似的模块,这可能让我简单地#34; For Each"通过代码模块集合并一次一个地在打印机上抛出sub。它可能需要10-15行代码。

我的首要任务是打印,最好是在自己的页面上使用每个子/功能,但是使用IDE的正常打印功能,所有代码在一个长打印输出中一起运行。接下来,我想在每个VBP中创建每个子,函数,变量和常量的名称的索引/ toc。我们有Visual Studio 6.0企业版,但似乎没有任何内容可以用来做这些事情。

你可能会笑,问,"为什么VB6 .. ?? LOL !!&#34 ;.这是因为我负责升级和更改运行工厂的大型软件系统的VB6源代码。它位于一个与外界无关的孤立网络上,并且已经运行了14年,但现在他们想开始升级一些东西。该系统由许多VBP文件组成,每个文件都有许多模块和表格。

编辑:我确实尝试使用谷歌搜索来获得答案,但事实证明这是不可能的。我得到的只是关于用VB6编写的应用程序打印的编码样本,而不是从IDE打印源代码。

4 个答案:

答案 0 :(得分:2)

您无需正确解析代码以满足您的要求。自己写点东西。您可以输出到打印机或HTML文件。我这样做了一次,效果很好。

源代码文件只是文本文件。逐行读取文件,打印每一行。每次看到" end sub"开始新页面。或者"结束功能"或者"结束财产"。这样每个方法都将在一个单独的页面上开始。 FRM文件在顶部有控件定义,您可以通过查找仅包含" end"的行来跳过它。代码从那里开始。

如果你做了很多VB6我也建议你在MZ Tools中加入精彩的内容。它有很棒的搜索工具。不幸的是不再免费,但值得恕我直言。我与供应商没有任何联系。

答案 1 :(得分:1)

编写加载项。它比你想象的容易得多。

获得Steven Roman撰写的“开发Visual Basic插件”一书(O'Really,1999,ISBN 1-56592-527-0)。

答案 2 :(得分:1)

解析模块的程序和功能 hard ,相信me。特别是像这样的续行:

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

此外,属性可以End Property结束,也可以使用End FunctionEnd Sub结束

幸运的是,VBIDE的VBIDE比VBIDE的VBA版本有更多用于VB项目的类和方法。

其中一个是CodePane.Members属性,它返回所有标识符的集合(尽管我认为它省略了TypeEnum标识符,但是它们在模块中的模块的声明部分。

enter image description here

每个成员公开各种属性,包括它在模块中的位置: enter image description here

如果您对更详细的解析以及IDE的全功能加载项感兴趣,您应该查看Rubberduck-VBA上的GitHub(我是贡献者)。它目前正在与VBA主机合作,但VB6正在路线图上。它有一个最强大的VB解析器,它是开源的。

答案 3 :(得分:0)

您可以考虑使用软件代码搜索工具对langauge元素编制索引,以便快速查找和检索。这样可以让您更容易找到感兴趣的代码,甚至可以避免打印所有的纸张,因为您只需查找代码。

我们的Source Code Search Engine知道许多语言的词汇元素,特别是VB6。它读取源代码库(数千个文件)并构造索引以帮助其快速查找代码元素。使用它的GUI,您可以根据语言元素编写查询,以查找代码片段,例如:

     S=*Login*

查找包含文本的字符串(仅限)"登录" (使用简单的WildCards)或

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

将找到名称以" account"开头的所有子程序。无论首字母大写(完整正则表达式)还是

       'IF'  ... N>17<35

查找使用17到35之间任何值的IF语句(&#34; ..&#34;表示&#34;接近&#34;)。 N查询元素可让您快速轻松地找到任何常量。

查询语言的一个非常强大的属性是&#34;而不是&#34;。这允许您构建一个发现&#34;太多的草率查询&#34;然后消除过多的&#34;部分:

       I '+' I  - I=xyz

找到两个不包含变量xyz的变量。

您可以单击任何命中列表,并在GUI窗口中显示代码文本。没有必要的纸张。

因为它知道每个语言的词法结构,所以它不会被空格,换行符,注释甚至包含文本等代码的字符串所混淆。