天极传媒:天极网全国分站
您现在的位置: >>
VB“超频”秘籍之隐藏的Variant变量
火眼识破隐藏的Variant变量 如果没有用As语句声明变量,默认类型就是Variants,比如:
Dim name ’ this is a variant 或者,当前模块下没有声明Option Explicit语句时,任何变量都是Variants类型。 许多开发者,特别是那些先前是C程序员的人,都会深信下面的语句将声明Interger类型变量:
Dim x, y As Integer 而实际上,x被声明为了variant类型。由于variant类型变量要比Integer类型慢很多,所以要特别注意这种情况。正确的一行声明方法是:
Dim x As Integer, y As Integer GoSub在编译程序中速度变慢 编译为本地代码的VB应用程序中,如果使用 GoSubs 命令,就会比通常的 Subs 或者 Function 调用慢5-6倍;相反,如果是p-code模式,就会相当快。 减少DoEvents语句的数量 不要在代码中放置不必要的DoEvents语句,尤其是在时间要求高的循环中。遵循这个原则,至少能在循环中的每N次反复时才执行DoEvents语句,从而增强效率。比如使用下面的语句:
If (loopNdx Mod 10) = 0 Then DoEvents 如果只是使用DoEvents来屏蔽以及操作,那么就可以在事件队列中存在待处理项目时调用它。通过API函数GetInputState来检查这个条件的发生:
Declare Function GetInputState Lib "user32" Alias "GetInputState" () As Long ’ ... If GetInputState() Then DoEvents 为常量定义合适的类型 VB在内部使用最简单、最可能的数据类型保存符号数值,这意味着最通常的数字类型-比如0或者1-都按照Integer类型存储。如果在浮点表达式中使用这些常量,可以通过常量的合适类型来加速程序运行,就象下面的代码:
value# = value# + 1#. 这个语句强迫编译器按照Double格式存储常量,这样就省却了运行时的隐含转换工作。还有另外的一种处理方法就是:在常量声明时就进行相应类型的定义,代码如下:
Const ONE As Double = 1 And、Or和Xor:让我们来优化表达式 要检测一个整数值的最高有效位是否有数值,通常要使用如下的代码(有二种情况:第一组If判断表明对Integer类型,第二组对Long类型):
If intValue And &H8000 Then ’ most significant bit is set End If If lngValue And &H Then ’ most significant bit is set End If 但由于所有的VB变量都是有符号的,因此,最高有效位也是符号位,不管处理什么类型的数值,通过下面的代码就可以实现检测目的:
If anyValue & 0 Then ’ most significant bit is set End If 另外,要检测2个或者更多个数值的符号,只需要通过一个Bit位与符号位的简单表达式就可以完成。下面是应用这个技术的几段具体代码: 1、判断X和Y是否为同符号数值:
If (x & 0 And y & 0) Or (x &= 0 And y &=0) Then ... ’ the optimized approach If (x Xor y) &= 0 Then 2、判断X、Y和Z是否都为正数
If x &= 0 And y &= 0 And z &= 0 Then ... ’ the optimized approach If (x Or y Or z) &= 0 Then ... 3、判断X、Y和Z是否都为负数
If x & 0 And y & 0 And z & 0 Then ... ’ the optimized approach If (x And y And z) & 0 Then ... 4、判断X、Y和Z是否都为0
If x = 0 And y = 0 And z = 0 Then ... ’ the optimized approach If (x Or y Or z) = 0 Then ... 5、判断X、Y和Z是否都不为0
If x = 0 And y = 0 And z = 0 Then ... ’ the optimized approach If (x Or y Or z) = 0 Then ... 要使用这些来简单化一个复杂的表达式,必须要完全理解boolean型的操作原理。比如,你可能会认为下面的2行代码在功能上是一致的:
If x && 0 And y && 0 Then If (x And y) Then ... 然而我们可以轻易地证明他们是不同的,比如X=3(二进制=0011),Y=4(二进制=0100)。不过没有关系,遇到这种情况时,我们可以对上面的代码进行局部优化,就能实现目的。代码如下:
If (x && 0) And y Then ...
(作者:责任编辑:方舟)
天极新媒体&最酷科技资讯扫码赢大奖
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
笔记本手机数码家电01.如何把用VB进行控制台命令的输入和输出.以下是我做的代码,-----------------------------------------------------模块代码----------------------------------------------Attribute VB_Name = "DosIo"'私有的数据结构申明Private Type STARTUPINFO '(cre...查看完整版&&&02.如何把用VB进行控制台命令的输入和输出.以下是我做的代码,-----------------------------------------------------模块代码----------------------------------------------Attribute VB_Name = "DosIo"'私有的数据结构申明Private Type STARTUPINFO '(cre...查看完整版&&&03.2. 三. 标准输入/输出和重定向 (shell命令)三.标准输入/输出和重定向1.标准输入与输出我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两...查看完整版&&&04.Java控制台输入,输出!/* * Created on * * TODO To change the template for this generated file go to* Window - Preferences - Java - Code Style - Code Templates*/import java.io.BufferedRimport java.io.IOExcepti...查看完整版&&&05.用VB读取和控制Windows的中文输入法在Windows中我们可以用“Ctrl+Shift”键来调入或切换中文输入法,但是这样做每次都是使位于输入法列表顶端的那个输入法首先被调用。通常我们都要连续按好几次“Ctrl+Shift”才能将习惯的输入法调出。我编制了一段小...查看完整版&&&06.如何在VB中截获shell程序的输出在Windows环境下的所谓shell程序就是dos命令行程序,比如VC的CL.exe命令行编译器,JDK的javac编译器,启动java程序用的java.exe都是标准的shell程序。截获一个shell程序的输出是很有用的,比如说您可以自己编写一个I...查看完整版&&&07.VB中如何用List进行选择2002年的时候,因为要用到大量的list来选择数据,于是做了一个模块。经过这么多年的测试,使用绝对稳定快捷。提供单Item函数:cmdDel_ClickcmdAdd_Click多Item函数:cmdDelAll_ClickcmdAddAll_Click----------------...查看完整版&&&08.[初学VB.net]如何通过控件的名称来控制控件Imports System.Reflection
Dim i As Integer
Dim namestr As String
For i = 0 To dataset_system.Tables("Company").Columns.Count - 1
namestr = ""
namestr = "Txt_Compa...查看完整版&&&09.VB中如何用List进行选择2002年的时候,因为要用到大量的list来选择数据,于是做了一个模块。经过这么多年的测试,使用绝对稳定快捷。提供单Item函数:cmdDel_ClickcmdAdd_Click多Item函数:cmdDelAll_ClickcmdAddAll_Click----------------...查看完整版&&&10.[初学VB.net]如何通过控件的名称来控制控件Imports System.Reflection
Dim i As Integer
Dim namestr As String
For i = 0 To dataset_system.Tables("Company").Columns.Count - 1
namestr = ""
namestr = "Txt_Compa...查看完整版&&&&&&&今日推荐&&&&&&日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。
最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。
歌手:Def...老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...把牛仔裤磨出有线的破洞
1、具体工具就是磨脚石,下面垫一个硬物,然后用磨脚石一直磨一直磨,到把那块磨薄了,用手撕开就好了。出来的洞啊很自然的。需要猫须的话调几...先来看下敬业福和爱国福
今年春节,支付宝再次推出了“五福红包”活动,表示要“把欠大家的敬业福都还给大家”。
今天该活动正式启动,和去年一样,需要收集“五福”...有时候我们打开冰箱就会闻到一股异味,冰箱里的这种异味是因为一些物质发出的气味的混合体,闻起来让人恶心。 产生这些异味的主要原因有以下几点。
1、很多人有这种习...?&?&?&?&&&01.如何把用VB进行控制台命令的输入和输出.以下是我做的代码,-----------------------------------------------------模块代码----------------------------------------------Attribute VB_Name = "DosIo"'私有的数据结构申明Private Type STARTUPINFO '(cre...查看完整版&&&02.如何把用VB进行控制台命令的输入和输出.以下是我做的代码,-----------------------------------------------------模块代码----------------------------------------------Attribute VB_Name = "DosIo"'私有的数据结构申明Private Type STARTUPINFO '(cre...查看完整版&&&03.2. 三. 标准输入/输出和重定向 (shell命令)三.标准输入/输出和重定向1.标准输入与输出我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两...查看完整版&&&04.Java控制台输入,输出!/* * Created on * * TODO To change the template for this generated file go to* Window - Preferences - Java - Code Style - Code Templates*/import java.io.BufferedRimport java.io.IOExcepti...查看完整版&&&05.用VB读取和控制Windows的中文输入法在Windows中我们可以用“Ctrl+Shift”键来调入或切换中文输入法,但是这样做每次都是使位于输入法列表顶端的那个输入法首先被调用。通常我们都要连续按好几次“Ctrl+Shift”才能将习惯的输入法调出。我编制了一段小...查看完整版&&&06.如何在VB中截获shell程序的输出在Windows环境下的所谓shell程序就是dos命令行程序,比如VC的CL.exe命令行编译器,JDK的javac编译器,启动java程序用的java.exe都是标准的shell程序。截获一个shell程序的输出是很有用的,比如说您可以自己编写一个I...查看完整版&&&07.VB中如何用List进行选择2002年的时候,因为要用到大量的list来选择数据,于是做了一个模块。经过这么多年的测试,使用绝对稳定快捷。提供单Item函数:cmdDel_ClickcmdAdd_Click多Item函数:cmdDelAll_ClickcmdAddAll_Click----------------...查看完整版&&&08.[初学VB.net]如何通过控件的名称来控制控件Imports System.Reflection
Dim i As Integer
Dim namestr As String
For i = 0 To dataset_system.Tables("Company").Columns.Count - 1
namestr = ""
namestr = "Txt_Compa...查看完整版&&&09.VB中如何用List进行选择2002年的时候,因为要用到大量的list来选择数据,于是做了一个模块。经过这么多年的测试,使用绝对稳定快捷。提供单Item函数:cmdDel_ClickcmdAdd_Click多Item函数:cmdDelAll_ClickcmdAddAll_Click----------------...查看完整版&&&10.[初学VB.net]如何通过控件的名称来控制控件Imports System.Reflection
Dim i As Integer
Dim namestr As String
For i = 0 To dataset_system.Tables("Company").Columns.Count - 1
namestr = ""
namestr = "Txt_Compa...查看完整版&&& 免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。&&&&为你推荐&&&转载本文&UBB代码&HTML代码复制到剪贴板...&更多内容??????????&&热帖排行&&&频道精选&&王朝女性&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&王朝分栏&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&王朝编程&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&王朝导购&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&王朝其他&&|&&|&&|&&|&&|&&|&&&&2005-&&版权所有&