Visual Basic 的未来之二(转)
一个Web Forms页包括两部分:实现Web Forms页可视界面的一个HTML文件和处理Web Forms页事件的源文件。既然目前有三分之一基于Visual Basic环境的开发是面向网络,Microsoft计划进一步增强这方面的功能。在下一个版本的Visual Basic中,你可以象现在使用Visual Basic生成表单一样设计Web Forms。你将拥有一个Web控件工具箱。你可以直接把控件拖放到HTML编辑器中使用,只需要设置一下它们的特性,编写一些适当的代码即可。(见Figure 1)。总而言之,你可以象你使用Visual Basic生成表单一样来做这些工作。你会拥有完全符合IntelliSense®、
Visual Basic 的未来之一(转)
Visual Basic 的未来 一个版本中将出现的Web Forms(Web表单), Web services(Web服务)和语言的改进 本文读者是已经熟悉了Visual Basic的用户。 概述: 下一个版本的Microsoft Visual Basic 主要有以下三方面的改进:Web Forms、Web services和面向对象的语法方面的改进。 Web Forms使得经验丰富的Visual Basic用户可以象现在编写单机程序一样简单地开发网络应用程序。通过SOAP 接口, Web services让你在可以联网的任何地方配置你所设计的组件。另外,几个在面向对象的语言方面的关键性的改进使得Visual Basic的代码象C++一样具有灵活性,这几
VB超频快餐之十二(转)
上述程序有2层循环,通过缓存intArray(i)的数值到一个普通的、非数组变量中,节省了CPU运行时间。经测试,这将提高80%的速度。创建新表时,快速拷贝字段在VB6中,无需离开开发环境就可以创建新的SQL Server和Oracle表。方法很简单:打开DataView窗口,用鼠标右键单击数据库的表文件夹,再选择新表格菜单命令。当处理相似表格时,就是说具有许多相同字段的表格,我们完全可以在很短的时间内容完成设定操作。具体步骤是:在设计模式下打开源表格,加亮选择要拷贝字段对应的行,按Ctrl-C拷贝信息到粘贴板;然后,在设计模式打开目标表格,将光
VB超频快餐之十四(转)
经测试,优化的循环代码要比传统方法执行速度快40%左右。原因在于:将Nodes集合对象保存在临时变量中,或者应用With代码块后VB将使用隐藏的临时变量后,就可以避免在循环中重复绑定Nodes对象到它的父TreeView1对象上。由于这种绑定是低效率的,因此省却它就能节省大量的执行时间。同样的道理对于其他ActiveX控件也生效:ListView控件的ListItems、ListSubItems以及ColumnHeaders集合Toolbar控件的Buttons和ButtonMenus集合ImageList的ListImages集合StatusBar控件的Panels集合TabStrip控件的Tabs集合Friend过程快于Public过程你可能会非常
VB超频快餐之十(转)
最后一个例子是:检测NumValue是否包含一个有符号的十进制数值。这种情况下,我们必须要确定存在一个前导符号以及只有一个十进制分隔符,并且所有其他字符都是数字符: ' NumValue是被检测的字符串 If NumValue Like "#" Or (Len(NumValue) > 1 And Left$(NumValue, _ 1) Like "[-+.0-9]" And Not Mid$(NumValue, 2) Like "*[!.0-9]*" And Not _ NumValue Like "*.*.*" ) Then Print "OK" 创建任意长度重复字符串的简洁方法 String$函数只能重复复制单字符,当需要重复复制2个或多个
VB超频快餐之十一(转)
快速初始化Variant和String类型数组VB中没有提供定义数组并同时初始化其内容的方法,所以大多数情况下,必须单独地设置每一个元素,就象下面一样:Dim strArray(0 To 3) As StringstrArray(0) = "Spring"strArray(1) = "Summer"strArray(2) = "Fall"strArray(3) = "Winter"在VB4、VB5和VB6中,可以使用Array()函数随意创建一个Variants类型数组:Dim varArray() As VariantvarArray() = Array("Spring", "Summer", "Fall", "Winter")但却没有同样的函
VB超频快餐之九(转)
在VB6中,函数是能够返回数组对象的。这种情况下,我们不能象返回对象或者数值的其他函数一样使用函数名当做局部变量来存储中间结果,因此不得不生成一个临时局部数组,函数退出前再分配这个数组给函数名,就象下面的代码一样: ' 返回一个数组,其中含有N个随即元素 ' 并且将平均值保存在AVG中 Function GetRandomArray(ByVal n As Long, avg As Single) As Single() Dim i As Long, sum As Single ReDim res(1 To n) As Single ' 以随机数填充数组,并计算总和 Randomize Timer For i = 1 To n res(i) = Rnd sum = sum + res(i) Next '
VB超频快餐之八(转)
除法运算符""与"/"的区别 整数间执行除法运算时,要使用 "" 而不是 "/"。 "/" 运算符要求返回一个单一数值,所以,表面上看似简单的一行代码: C% = A% / B% 实际上包含了3个隐含的转换操作:2个为除法运算做准备,从Integer转换到Single;一个完成最后的赋值操作,从Integer转换到Single。但是如果使用了""操作符,情况就大不相同了!不仅不会有这么多中间步骤,而且执行速度大大提高。 同时请记住:使用"/"操作符做除法运算时,如果其中之一是Double类型,那么结
VB超频快餐之七(转)
要使用这些来简单化一个复杂的表达式,必须要完全理解boolean型的操作原理。比如,你可能会认为下面的2行代码在功能上是一致的:If x <> 0 And y <> 0 ThenIf (x And y) Then ...然而我们可以轻易地证明他们是不同的,比如X=3(二进制=0011),Y=4(二进制=0100)。不过没有关系,遇到这种情况时,我们可以对上面的代码进行局部优化,就能实现目的。代码如下:If (x <> 0) And y Then ... 静态变量慢于动态变量 在过程中引用静态局部变量要比引用常规局部动态变量慢2-3倍。要想真正地加速过程的执行速度,最彻底的
VB超频快餐之六(转)
为常量定义合适的类型VB在内部使用最简单、最可能的数据类型保存符号数值,这意味着最通常的数字类型-比如0或者1-都按照Integer类型存储。如果在浮点表达式中使用这些常量,可以通过常量的合适类型来加速程序运行,就象下面的代码:value# = value# + 1#.这个语句强迫编译器按照Double格式存储常量,这样就省却了运行时的隐含转换工作。还有另外的一种处理方法就是:在常量声明时就进行相应类型的定义,代码如下:Const ONE As Double = 1And、Or和Xor:让我们来优化表达式要检测一个整数值的最高有效位是否有数值,通常要使用如下的代码
VB超频快餐之四(转)
2、更加简练的方法:result = InStr(";zero;;one;;;two;;;three;four;;five;;six;;;seven;eight;nine;", _";" & LCase$(word) & ";") 6精用Boolean表达式,让代码再减肥当设置基于表达式结果的Boolean型数值时,要避免使用多余的If/Then/Else语句结果。比如:If SomeVar > SomeOtherVar ThenBoolVal = TrueElseBoolVal = FalseEnd If上面这段代码就很烦琐,它们完全可以使用下面的一行代码来替代:BoolVal = (SomeVar > SomeOtherVar)括号不是必须的,但可以增加可读性。根据表达式中的操作
VB超频快餐之五(转)
2、更简练的方法x = x - (SomeVar > SomeOtherVar)函数名巧做局部变量很多程序员都没有认识到“在函数本身中使用函数名”的妙处,这就象对待一个局部变量一样。应用这个技巧可以起到临时变量的作用,有时还能加速程序运行。看看下面的代码:Function Max(arr() As Long) As LongDim res As Long, i As Longres = arr(LBound(arr))For i = LBound(arr) + 1 To UBound(arr)If arr(i) > res Then res = arr(i)NextMax = resEnd Function去掉res变量,使用函数名称本身这个局部变量,可以使程序更加简练:Function Max(arr() As Long) A
VB超频快餐之三(转)
2、更加简练的方法:If Instr(";winter;spring;summer;fall;", ";" & word & ";") Then' it is a season's nameEnd If有时候,甚至可以使用InStr来替代SelectCase代码段,但一定要注意参数中的字符数目。下面的例子中,转换数字0到9的相应英文名称为阿拉伯数字: 1、普通的方法:Select Case LCase$(word)Case "zero"result = 0Case "one"result = 1Case "two"result = 2Case "three"result = 3Case "four"result = 4Case "five"resu
VB超频快餐之一(转)
用Mid$命令超速字符串添加操作大家都知道,&操作符的执行速度是相当慢的,特别是处理长字符串时。当必须重复地在同一变量上附加字符时,有一个基于Mid$命令的技巧可以使用。基本思路就是:预留一个足够长的空间存放操作的结果。下面是应用这个技术的一个例子。假设要建立一个字符串,它要附加从1开始的10000个整数:"1 2 3 4 5 6 7 ... 999910000"。下面是最简单的实现代码:res = ""For i = 1 to 10000: res = res & Str(i): Next<>face=宋体>代码虽然简单,但问题也很明显:Res变量将被重分配1000
VB超频快餐之二(转)
从头开始删除集合项目删除集合中的所有内容有许多方法,其中有些非常得迅速。来看看一个包含10,000个项目的集合:Dim col As New Collection, i As LongFor i = 1 To 10000 col.Add i, CStr(i)Next可以从末尾位置为起点删除集合内容,如下:For i = col.Count To 1 Step -1col.Remove iNext也可以从开始位置为起点删除集合内容,如下:For i = 1 To col.Count Step 1col.Remove iNext<>face=宋体>试验证明,后者要快于前者百倍多,比如0.06秒比4.1秒。原因在于:当引用接近末尾位置的集合项目时,VB必须要从第1个项目开始遍历
VB 6.0中类聚集关系的实现(转)
---- 类之间最主要的关系有两种,它们是聚集(Aggregation)和继承(Generelization)。聚集表示类之间的关系是整体与部分的关系,例如一个家庭有一个父亲、一个母亲和若干个孩子。类之间的聚集关系又称包含关系,一个类由若干个其他类组合而成,当该类的实例被创建后,组成它的各类的实例将自动被创建。 ---- 下图描述了Family类与组成它的各类之间的关系。Family类与Father类、Mother类的关系是一对一的关系,而Family类与Child类的关系是一对多的关系。为了简化类之间的关系,我们增加了一个Children类,Children类是Child类的集合,因
读取和修改Windows注册表(转)
使用Visual Basic读取和修改Windows注册表 在过去,Visual Basic应用程序的开发者们对于如何在两次应用程序的运行之间保留状态信息感到非常的困难。这是因为基于Microsoft Windows的应用程序(包括Visual Basic)需要将应用程序的状态信息写入到一个文本文件(*.INI文件)中,且需要经常对这些文件中的文本进行分析,以包含有用的状态信息。 现在,随着Windows95以及WindowsNT这类32位操作系统的到来,应用程序可以通过使用一个叫做Windows注册表的存储场所来保留应用程序的状态信息,并且将它们自己注册在系统之中。通过位于AD
用VB开发分布式应用之二(转)
三、生成安装盘 服务器端组件及客户端程序将安装在不同的机器上,应利用setup wizard分别生成安装程序。 当生成客户端程序安装盘时,需提供服务器组件所在的机器名(以后可以修改),这将影响客户端机器的注册项,这些注册项告诉客户端程序,到那里去寻找相应的服务(即服务器端组件提供的服务)。微软提供了工具,可以根据需要随时修改这些注册项。如果使用remote automation机制,可使用remauto connection manager;如使用dcom机制,可使用dcom configuration manager。remauto connector manager在VB软件包中即有,在生成安
使用ADD-IN 技术加强Visual Basic 开发环境之二(转)
Private Sub OKButton_Click() MsgBox VBInstance.FullName End Sub 改为: Private Sub OKButton_Click() Call mReplace() End Sub Private Sub mReplace() Dim oPro As VBProject Dim oCom As VBComponent Dim bFind As Boolean Dim nFindLine as integer Dim nfindCol as integer Screen.MousePointer = vbHourglass On Error GoTo errmReplace Set oPro = VBInstance.ActiveVBProject '检查程序是否已保存 If oPro.FileName = "" Then MsgBox "请先保存!" ; Exit Sub For Each oCom In oPro.VBComponents bFind =
用VB开发分布式应用之一(转)
微软推出的VB是一个功能强大的开发平台。它在“代码重用性”上地加强是一个引人注目的特点。我们可以将需要多次重复使用的功能单元开发成activex组件(activex control,activex exe,activex dll),然后在新程序中象使用vb标准控件及类一样使用这些组件。 activex组件给开发网络应用带来很大方便。我们可以将这些组件分布在网络的不同机器上,构成分布式应用,就好象所有组件都在同一台机器上一样。很多朋友都有开发本地activex组件的经验,本文将结合实例介绍一下如何将activex组件分布在网络上构成分布式应用。 一、概述 “activex