当前位置:编程学习 > VB >>

大家帮我想一想啊,如果在已经有了codesmart,mztools等的前提下,再开始一个小的VB6 IDE外接程序,代码规模3-5K的那种,哪几个新功能是您的推

--------------------编程问答-------------------- 最多装装那个鼠标滚轮插件, 可以用滚轮上下翻代码 --------------------编程问答-------------------- 程序中,对一些错误没有处理,可能是致命的,可以添加一个自动添加on error goto errhandler的代码的功能 --------------------编程问答-------------------- 可以添加一个查看过程或函数被调用的位置 --------------------编程问答-------------------- 就装1个中轮滚动的插件,其他一律不装,免的到别的电脑还打不了代码了 --------------------编程问答--------------------
引用 2 楼 worldy 的回复:
程序中,对一些错误没有处理,可能是致命的,可以添加一个自动添加on error goto errhandler的代码的功能


这个我想过,弄一个选项,当添加事件过程时自动添加这种错误处理 --------------------编程问答-------------------- 有用的插件必然需要涉及到VB语法解析。VB6的编译器是封闭的,注定这么搞是劳命伤财,你见过VB6有好用的重构插件么?其实这是最有用的。

.NET下好玩的东西很多,得益于Compiler as a Service,有那么多人在给C#编写各种插件。我举一个例子,你看什么插件有给VB增加代码折叠的功能很神奇吧,在Roslyn的帮助下,只要你会用TreeView,写这样的东西就和玩一样,因为我直接访问编译器产生的语法树(也包括tokens、expression tree等等)。 --------------------编程问答--------------------
引用 6 楼 caozhy 的回复:
有用的插件必然需要涉及到VB语法解析。VB6的编译器是封闭的,注定这么搞是劳命伤财,你见过VB6有好用的重构插件么?其实这是最有用的。

.NET下好玩的东西很多,得益于Compiler as a Service,有那么多人在给C#编写各种插件。我举一个例子,你看什么插件有给VB增加代码折叠的功能很神奇吧,在Roslyn的帮助下,只要你会用TreeView,写这样的东西就和玩一样,因为我直接访……


呵呵,看来老兄对IDE扩展不太了解,VBIDE 扩展这方面能力是很强的,你几乎可以控制编程的各个方面,ide内部个各个细节事实上是很开放的 --------------------编程问答-------------------- 了解10年前的古董有意思么?VBIDE扩展能力很强?你给VB IDE添加一种新语言的支持看看?

我不是说不可以,但是一定是很麻烦的。事实上用VSShell,不需要什么技巧,就可以在几个小时内搞定。包括语法高亮、智能感知、Debugger集成。事实上MSDN上就有把IronPython集成到VSShell的例子。

你把Python整合到VBIDE试试看? --------------------编程问答-------------------- 我说了,给VB写插件方便不方便不是看那些花花绿绿的东西。我可以给VB6添加“记事本”“时钟”“计算器”“小说阅读器”“ftp上传下载工具”等很多功能,有意思么?

你要想给VB6写有意义的插件,你就得自己实现VB代码的词法/语法解析器乃至解释器,因为这些是VB不开放的。

另外,VB语法本身很糟糕,给VB写解释器甚至比给C#写解释器还困难。 --------------------编程问答--------------------
引用 9 楼 caozhy 的回复:
另外,VB语法本身很糟糕,给VB写解释器甚至比给C#写解释器还困难。


VB语法解释难,老兄你说笑话吧?
语法的灵活度和解释的难度是成正比的。
比如最简单的赋值(包括自增、自减)语句
A = 1

A = 1;
A += 1;
A -= 1;
A *= 1;
A /= 1;
A %= 1;
A <<= 2;
A >>= 2;
A &= 1;
A ^= 1;
A |= 1;
A++;
++A;
A--;
--A;
--------------------编程问答--------------------
引用 10 楼 Tiger_Zhao 的回复:
引用 9 楼 caozhy 的回复:另外,VB语法本身很糟糕,给VB写解释器甚至比给C#写解释器还困难。

VB语法解释难,老兄你说笑话吧?
语法的灵活度和解释的难度是成正比的。
比如最简单的赋值(包括自增、自减)语句
Visual Basic code?1A = 1
C/C++ code?123456789101112131415A = 1;A += 1;A……


笔误,我想说的是给VB写语法解析比给C#等现代的语言更难。

难的原因是VB包含很多过时的,非结构化的语言成分。 --------------------编程问答-------------------- 运算符多寡和实现语法分析没有什么必然的联系,这是词法分析解决的问题。 --------------------编程问答--------------------
引用 11 楼 caozhy 的回复:
难的原因是VB包含很多过时的,非结构化的语言成分。 

猜到你会拿这个来糊弄。

很可惜,结构化好不好和语法解析难不难没有关系。
就算一个函数中有 100 个 GOTO,人读不懂逻辑,但语法解析根本不受影响。

又:下面的代码就是结构化好的语言写的
#include"stdio.h" main(int _){_^*("^o^"+(*"@_@">>7))-74?putchar(_^*&("- -!"[1])-13?*(&"=^_^=Mx\"Mehc'2)IB[RLCET-_-b"[_]+4)^_-1:10),main(*("^o^y"+1)-'n'+_):*"^_^";getch();} 
--------------------编程问答-------------------- 应该是两行的,鄙视对复制内容动手脚的网站!
#include"stdio.h"
main(int _){_^*("^o^"+(*"@_@">>7))-74?putchar(_^*&("- -!"[1])-13?*(&"=^_^=Mx\"Mehc'2)IB[RLCET-_-b"[_]+4)^_-1:10),main(*("^o^y"+1)-'n'+_):*"^_^";getch();} 
--------------------编程问答--------------------
引用 13 楼 Tiger_Zhao 的回复:
引用 11 楼 caozhy 的回复:难的原因是VB包含很多过时的,非结构化的语言成分。 
猜到你会拿这个来糊弄。

很可惜,结构化好不好和语法解析难不难没有关系。
就算一个函数中有 100 个 GOTO,人读不懂逻辑,但语法解析根本不受影响。

又:下面的代码就是结构化好的语言写的
C/C++ code?1#include"stdio.h" main(in……


首先,C不算我说的良好的语言,其次,你根本没有理解我的意思,举例也莫名其妙。

我说的是实现语法解析的难度,而不是看懂源代码的难度。 --------------------编程问答-------------------- 很难想象这是一个5星的用户讲出的话,那么业余。

机器和人对复杂、简单的理解是完全不同的。按照你的理论,最简单的语言不是C,也不是VB,而是汉语了。你写一个汉语的编译器试试看?

VB有很多杂七杂八的规则,比如说
Open xxx For xxx As xxx
调用方法,有返回值和没有返回值还要区分Call xxx和xxx(...)
还有那个奇怪的On Error Goto/Resume Next
甚至还有GoSub之类的语法,你尝试用BNF范式描述下,多到让你吐血,更不用说实现了。 --------------------编程问答-------------------- C# 作为 C++ 的继承者,那么原先灵活(较难解析)的语法至少 90% 是支持的吧?
虽然 C# 提供了“结构好”的语法,但也会兼容以前“结构不好”的语法吧!
假如你来写 C# 的语法解析,总要考虑这些“结构不好”的代码吧?——这就是难度啊
虽然举的是C的例子,不一定完全符合C#,但是能直观表现难度。
不要求读懂,只要构思一下如何解析。

而 VB6 语法就简单多了,写千行左右代码就可以做一个简单的代码格式化工具了:
统一缩进;
将一个 Dim 语句定义多个变量拆分成单独的 Dim 语句。 --------------------编程问答-------------------- 打开一个事件,最好是能将容错处理代码自动生成。生成一个新的工程,最好能自动生成一个标准的模块,里面包含常用的API函数。 --------------------编程问答-------------------- 我想明白我俩的看法差异在哪里了。

你侧重整体的结构性,所以觉得没有统一简洁的范式。
VB6 语句的范式种类多,这我同意。
但由于从最早的“行式”语法演变而来,VB6代码只要拆分成行,每行的范式都不复杂。
结合写编解析器的实践看,我认为拆分再单句范式分析,简单。
--------------------编程问答-------------------- 我不谈那些看似很学术的观点(其实编译原理都学过,谈不上学术),我想说说为什么要做语法分析。

不谈C#,谈VB,可以看看roslyn为编写插件带来了什么好处:
http://blogs.msdn.com/b/visualstudio/archive/2011/10/19/roslyn-syntax-visualizers.aspx
你可以看到,一组简单的API可以将用户输入的代码转化为语法树。

以18L说的需求为例,如果你不做语法解析,你的插件美其名曰“添加异常处理”,其实不过是多重剪贴板,它只能机械地给你往一个方法中灌入一些文本,我现在要做如下的需求,将原有的异常处理全部去掉,或者将A形式的异常处理全部替换成B形式的,或者,我需要检查代码中哪些部分没有覆盖到异常处理,你能实现么? --------------------编程问答-------------------- 又想复杂了不是!
问题是 VB 就是简单到没有多形式的异常处理,纯粹就是机械添加
Sub f()
    On Error GoTo ErrHandler

    <原内容>

ExitEntry:
    Exit Sub
ErrHandler:
    ErrProc STR_MODULE_NAME & ".f()"
    Resume ExitEntry
End Sub

MZ-Tools 的模板就轻易实现了。
再把 <原内容> 中的 On Error Goto 0 挑出来做个提示,就能检查未覆盖了。 --------------------编程问答-------------------- 还有,我们的分歧是“语法解析”,只管语法的难易度,不管程序的正确性。 --------------------编程问答--------------------
引用 21 楼 Tiger_Zhao 的回复:
又想复杂了不是!
问题是 VB 就是简单到没有多形式的异常处理,纯粹就是机械添加
Visual Basic code?1234567891011Sub f()    On Error GoTo ErrHandler     <原内容> ExitEntry:    Exit SubErrHandler:    ErrProc STR_MODULE_NAME & ……


有个美国人居然把VB的错误处理还写出一本书来。


你可见VB实现异常处理的复杂。

如果你不是只打算拿VB做玩具的话。

比如这样的逻辑:
Try
    AccessNetwork
Catch CannotAccessNetworkException
    Try
        Writelog CannotAccessNetworkException
    Catch CannotWriteFileException
        ...
    End Try
Catch DataInvalidException
    Throw ArgumentException
End Try

你用VB6写写看。据我所知,VB6不支持处理异常处理中引发的新异常吧。     --------------------编程问答--------------------
引用 21 楼 Tiger_Zhao 的回复:
又想复杂了不是!
问题是 VB 就是简单到没有多形式的异常处理,纯粹就是机械添加
Visual Basic code?1234567891011Sub f()    On Error GoTo ErrHandler     <原内容> ExitEntry:    Exit SubErrHandler:    ErrProc STR_MODULE_NAME & ……


MZ-Tools做的如何先不说,就说给你半个小时,让你做一个出来,你就肯定办不到。据说MZ-Tools还可以卖钱吧,这东西在.NET平台上估计卖不出去,这就是差别——WPS For DOS是一个商品软件,功能也就和VB拖一个文本框差不多,而且前者的用户体验还不能和后者比,因为时代不同了。 --------------------编程问答-------------------- 我22楼已经打了预防针了!
不要跑题,VB6“语法解析”。 --------------------编程问答-------------------- --------------------编程问答-------------------- 呵呵,啥都不用。 --------------------编程问答--------------------
引用 楼主 bcrun 的回复:

            如题,集思广益,300分奉上.
我自己先开个头,就是那个坑爹的“对象浏览器”(F2出现的那个)的“左右两个列表框”经常会变得很长的bug,会把下面的注释都盖掉,挺烦的。

CSDN之VB一群:283362041
              
          ……


对象浏览器左右的列表框会把下面的注释盖住?
我没遇到过呀
我每次都能拖动下面的注释框的大小。
--------------
斑竹在vb论坛讨论vb这个不好,那个不好,奇怪的很哦 --------------------编程问答-------------------- 卖爆米花啦……卖小板凳啦……元旦特价,要的速度。







买了干吗?

你2啊,坐着看大虾论剑啊 --------------------编程问答-------------------- 哎 无语。。讨论这么激烈干嘛。。 自己试试就知道咧 - -! --------------------编程问答-------------------- 应该要像VBNET那样,对变量 关键字,字符串要用不同的颜色标出

自动排版,对简单错误提供修复建议  支持点到某个变量,这个变量都高亮显示   --------------------编程问答-------------------- 31楼说的那些功能我也想要啊,可惜那些就算codesmart也没做,应该是难度比较高吧。
我也就做点低难度的或简化的,比如像vs.net里“向前向后定位”那样的 --------------------编程问答-------------------- 好象争得跑题了。
各位有用过那二个插件吗?
codesmart,太强大了。精典的多页代码显示,折叠代码,关键字着色都有。
mztools,大家提的错误处理,他可以设置代码段,一个快捷键就进来了。

另外就是鼠标滚轮,这个一定要的,不然太不方便了。

语言没有好坏,只是用的人习惯不习惯而已。
水平高低决定了用同一种语言,写出来的东西也是良莠不齐。

个人观点,能养家糊口的语言就是好语言。 --------------------编程问答-------------------- bcrun 想写一个 vb Add-in,这很正常,各人有各人的习惯和需求。
你有一个想法,先做出来就是,开始不用考虑什么大而全的目标。
Just DO it!
————————
caozhy 泼冷水,说 VB 语法解析困难,这是我要反对的,仅此而已。
我有实际经验,在用 Smart Indent 之前,自己写过简单的语法解析、进行代码格式化(当然没有 Smart Indent 这样全面),就是千行左右代码搞定。
"MZ-Tools做的如何先不说,就说给你半个小时,让你做一个出来,你就肯定办不到。"——这种通过否定一点来否定全部的论证方法听得耳朵都起老茧的,直接无视了。
————————
虽然准备有许多 Add-in,但是经常加载的也就有限个
MZ-Tools
Smart Indent
Ulli's VB Companion(支持鼠标滚轮)
*** (大学室友写的,我喜欢其中的一个功能) --------------------编程问答-------------------- 语法解析,那是机器的事,管人什么事啊! --------------------编程问答-------------------- 哈哈,感觉caozhy对VB6是BS得一无是处啊,简直恨不得用VB6的人全都转到C#之类的.NET平台才好,看到好多个帖子里的回复,都是这样的感觉 --------------------编程问答--------------------
引用 36 楼 myjian 的回复:
哈哈,感觉caozhy对VB6是BS得一无是处啊,简直恨不得用VB6的人全都转到C#之类的.NET平台才好,看到好多个帖子里的回复,都是这样的感觉


绝对有私心,典型的屁股决定嘴巴啊,一边狂BS一边狂来这个版捞专家分:)
他今年的MVP申请表中估计也少不了VB版答疑的帖子链接

唉呀,我们好像忘了把那个国产的免费VBIDE扩展AmicForVB贴出来了,感觉功能上可和mztools互补。可惜作者没有坚持下去,最新的还是2009年的,有几个很讨厌的BUG都没改正。

http://download.csdn.net/detail/acev/4656128
AmicForVB 1.1.8, vb插件,作者:予心居 --------------------编程问答-------------------- 难度由上至下递增,哈哈哈

1、滚轮必须的;
2、代码自动格式化;
3、检测未使用的变量、函数、过程,友情提示;
4、查找同一变量、函数、过程等对象的所有引用,需要区分变量定义范围;
5、代码区块折叠,类似于#region #endregion
6、最后提个难点的,能否添加函数指针,以前用VB6的时候,总觉得少一个功能,错误处理里面不能获得当前函数名称,类似如下:


on error goto errHandler

exit sub
errHandler:
err.function_name --------------------编程问答--------------------
引用 38 楼 AisaC 的回复:
总觉得少一个功能,错误处理里面不能获得当前函数名称,类似如下:

on error goto errHandler

exit sub
errHandler:
err.function_name 

那你以为我21楼的代码那来的,MZ-Tools 模板中有表达式可用
    On Error GoTo ErrHandler

{PROCEDURE_BODY}

ExitEntry:
    Exit {PROCEDURE_TYPE}
ErrHandler:
    ErrProc STR_MODULE_NAME & ".{PROCEDURE_NAME}()"
    Resume ExitEntry
--------------------编程问答--------------------
引用 39 楼 Tiger_Zhao 的回复:
引用 38 楼 AisaC 的回复:总觉得少一个功能,错误处理里面不能获得当前函数名称,类似如下:

on error goto errHandler

exit sub
errHandler:
err.function_name 
那你以为我21楼的代码那来的,MZ-Tools 模板中有表达式可用
Visual Basic code?123456789 ……


没用过MZ-Tools这个工具,原来已经有这工具了啊,是我孤陋寡闻了,哈哈 --------------------编程问答-------------------- 补充一句:我觉得Codesmart的autotext比mztools的Code Template方便

先结帖,下次正式确定下初期的功能再发新帖。 --------------------编程问答-------------------- 那就来个像 excel那样的 自动填充功能吧。  即 text1 下拉后变成 text2...

虽然可以用控件数组+循环完成,但有时候也真的需要啊  --------------------编程问答--------------------
引用 33 楼 vansoft 的回复:
好象争得跑题了。
各位有用过那二个插件吗?
codesmart,太强大了。精典的多页代码显示,折叠代码,关键字着色都有。
mztools,大家提的错误处理,他可以设置代码段,一个快捷键就进来了。

另外就是鼠标滚轮,这个一定要的,不然太不方便了。

语言没有好坏,只是用的人习惯不习惯而已。
水平高低决定了用同一种语言,写出来的东西也是良莠不齐。

个人观点,能养家糊口的语言就是好语言。


请教,为啥我没找到代码折叠在哪里呢?
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,