正在阅读:VB超频快餐,让我一次用个够!(五)VB超频快餐,让我一次用个够!(五)

2004-02-14 09:34 出处:eNet学院 作者:听风 责任编辑:pjl
另辟蹊径处理字符串中的字符:字节数组法 当要处理字符串中的每一个字符时,可以将字符串赋值到一个byte数组中进行操作。要记住:每一个Unicode字符对应双字节。这种方法通常要快许多,因为节省了大量的Mid$函数操作以及大量的临时字符串空间。下面的代码是统计字符串中空格数目的最快方法 Dim b() as Byte, count As Integer b() = source$ For i = 0 to UBound(b) Step LenB("A") If b(i) = 32 Then count = count + 1 Next 请注意上面代码中LenB()函数的特殊用法:在VB4(32位)、VB5和VB6中它返回数值2, 在VB4(16位)中返回数值1。因此,我们就可以使用同一代码段,而无需#If编译指令。 快速清除数组部分内容 清除动态数组的最快方法是使用ReDim,清除静态数组则是使用删除。但是如果只想清除数组的一部分内容,怎么办呢?看上去似乎只能使用For-Next循环了。 如果处理的是数字数组,有一个较快的方法。它基于ZeroMemory API函数,正如函数名所示,它能将一块内存区域填充为0。看看怎么应用这个函数来清除一个Long类型数组的一部分内容: Private Declare Sub ZeroMemory Lib "kernel32" Alias "RtlZeroMemory" (dest As _ Any, ByVal Bytes As Long) ’定义数组,填充数据 Dim a(1000) As Long For i = 1 To UBound(a) a(i) = i Next ’从a(200)开始清除100个元素内容 ZeroMemory a(200), 100 * Len(a(1)) 请注意上述代码中清除长度的表示方法,使用Len()函数保证了当数组类型改变时代码仍然有效。 快速初始化Variant和String类型数组 VB中没有提供定义数组并同时初始化其内容的方法,所以大多数情况下,必须单独地设置每一个元素,就象下面一样: Dim strArray(0 To 3) As String strArray(0) = "Spring" strArray(1) = "Summer" strArray(2) = "Fall" strArray(3) = "Winter" 在VB4、VB5和VB6中,可以使用Array()函数随意创建一个Variants类型数组: Dim varArray() As Variant varArray() = Array("Spring", "Summer", "Fall", "Winter") 但却没有同样的函数能创建非Variant类型数组。但是我们发现,在VB6中可以使用Split()函数创建字符串数组: Dim varArray() As String ’由Split建立的数组下标通常是从0开始的 varArray() = Split("Spring;Summer;Fall;Winter", ";") 在VB6中,同样能充分利用函数返回数组的能力,创建数组初始化程序段。比如下面的代码段: Function ArrayInt(ParamArray values() As Variant) As Integer() Dim i As Long ReDim res(0 To UBound(values)) As Integer For i = 0 To UBound(values) res(i) = values(i) Next ArrayInt = res() End Function 同时,也可以创建一个子程序段来检测传递给它的数值的类型,并返回正确类型的数组。这种情况下,函数应该定义为返回Variant。 访问简单变量总是快于数组元素值 读写数组中的元素速度通常都慢于访问一个简单变量,因此,如果在一个循环中要重复使用同一数组元素值,就应该分配数组元素值到临时变量中并使用这个变量。下面举一个例子,检测整数数组中是否存在重复项: Function AnyDuplicates(intArray() As Integer) As Boolean ’如果数组包含重复项,返回True Dim i As Long, j As Long, Dim lastItem As Long Dim value As Integer ’只计算机UBound()一次 lastItem = UBound(intArray) For i = LBound(intArray) To lastItem ’ 保存intArray(i)到非数组变量中 value = intArray(i) For j = i + 1 To lastItem If value = intArray(j) Then AnyDuplicates = True Exit Function End If Next Next ’没有发现重复项 AnyDuplicates = False End Function 上述程序有2层循环,通过缓存intArray(i)的数值到一个普通的、非数组变量中,节省了CPU运行时间。经测试,这将提高80%的速度。 创建新表时,快速拷贝字段 在VB6中,无需离开开发环境就可以创建新的SQL Server和Oracle表。方法很简单:打开DataView窗口,用鼠标右键单击数据库的表文件夹,再选择新表格菜单命令。 当处理相似表格时,就是说具有许多相同字段的表格,我们完全可以在很短的时间内容完成设定操作。具体步骤是:在设计模式下打开源表格,加亮选择要拷贝字段对应的行,按Ctrl-C拷贝信息到粘贴板;然后,在设计模式打开目标表格,将光标置于要粘贴字段所在的位置,按Ctrl-V。 这样,就拷贝了所有的字段名称以及它们所带的属性。

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品