vb60运算符大全.docx
《vb60运算符大全.docx》由会员分享,可在线阅读,更多相关《vb60运算符大全.docx(34页珍藏版)》请在冰豆网上搜索。
vb60运算符大全
vb6.0运算符大全(dàquán)
vb6.0运算符大全(dàquán)
Vb6.0运算符
1、&运算符
用来强制(qiángzhì)两个表达式作字符串连接(liánjiē)。
语法(yǔfǎ)
result=expression1&expression2
&运算符的语法具有(jùyǒu)以下几个部分:
部分
描述
result
必需的;任何String或Variant变量。
expression1
必需的;任何表达式。
expression2
必需的;任何表达式。
说明(shuōmíng)
如果expression不是字符串,则将其转换成String变体。
如果两个表达式都是字符串表达式,则result的数据类型是String;否则result是String变体。
如果两个表达式都是Null,则result也是Null。
但是,只要有一个expression是Null,那么在与其它表达式连接时,都将其作为长度为零的字符串("")处理。
任何Empty类型表达式也作为长度为零的字符串处理。
&运算符示例(shìlì)
本示例(shìlì)使用&运算符将字符串串接起来(qǐlái)。
DimMyStr
MyStr="Hello"&"World"'返回(fǎnhuí)"HelloWorld"。
MyStr="Check"&123&"Check"'返回(fǎnhuí)"Check123Check"。
2、*运算符
用来将两数相乘。
语法
result=number1*number2
*运算符的语法具有以下几个部分:
部分
描述
result
必需的;任何数值变量。
number1
必需的;任何数值表达式。
number2
必需的;任何数值表达式。
说明
result的数据类型通常与最精确的表达式的数据类型相同。
精确度由最低到最高的顺序是
Byte、Integer、Long、Single、Currency、Double和Decimal。
下列情况是例外:
如果
则result为
乘法运算有一个Single和一个Long,
转换成Double。
result的数据类型是Long、Single或Date变体,且超出正确范围,
转换成有Double的Variant。
result的数据类型是Byte变体,且超出正确范围,
转换成Integer变体。
result的数据类型是Integer变体,且超出正确范围,
转换成Long变体。
如果有一个(yīɡè)或两个表达式是Null表达式,则result为Null。
如果(rúguǒ)一个表达式是Empty,则作为(zuòwéi)0处理。
注意(zhùyì)乘法用到的精确度等级与加法和减法(jiǎnfǎ)用到的精确度等级不一样。
*运算符示例
本示例使用*运算符来计算两数的乘积。
DimMyValue
MyValue=2*2'返回4。
MyValue=459.35*334.90'返回153836.315。
3、+运算符
用来求两数之和。
语法
result=expression1+expression2
+运算符的语法具有以下几个部分:
部分
描述
result
必需的;任何数值变量。
expression1
必需的;任何表达式。
expression2
必需的;任何表达式。
说明(shuōmíng)
在使用(shǐyòng)+运算符时有可能无法确定是做加法还是做字符串连接(liánjiē)。
为避免混淆,请使用&运算符进行连接(liánjiē),并且改进程序代码的可读性。
如果至少(zhìshǎo)有一个表达式不是Variant,则可运用以下法则:
如果
则
两个表达式都是数值数据类型(Byte、Boolean、Integer、Long、Single、Double、Date、Currency或是Decimal)
相加。
两个表达式都是String
连接。
一个表达式是数值数据类型而另一个是Null之外的任意Variant。
相加。
一个表达式是String而其它是Null之外的任意Variant。
连接。
一个表达式是EmptyVariant
返回另一个不变的表达式作为result。
一个表达式是数值数据类型,而另一个是String
产生一个类型不匹配错误。
每个表达式都是Null
result是Null。
如果两个表达式都是Variant表达式,则可运用下列规则:
如果
则
两个Variant表达式都是数值
相加。
两个Variant表达式都是字符串
连接。
一个Variant表达式是数值而另一个是字符串
相加。
对于只有(zhǐyǒu)数值数据类型表达式的单纯加法,result的数据类型通常与其中(qízhōng)最精确的表达式的数据类型相同。
精确度由最低到最高的顺序是Byte、Integer、Long、Single、Double、Currency和Decimal。
但下列情况(qíngkuàng)例外:
如果
则result为
一个Single和一个Long相加,
一个Double。
result的数据类型是Long、Single或Date变体,且越出正确范围,
转换成Double变体。
result的数据类型是Byte变体,且超过本身的正确范围时,
转换成Integer变体。
result的数据类型是Integer变体,且超过本身的正确范围时,
转换成Long变体。
将一个Date加到任何数据类型上,
一个Date。
如果有一个(yīɡè)或两个表达式是Null表达式,则result为Null。
如果(rúguǒ)两个表达式都是Empty,则result是Integer。
但是,如果只有一个表达式是Empty,则另一个表达式原封不动地作为result返回。
注意加法和减法用到的精确度等级与乘法用到的精确度等级不一样。
+运算符示例(shìlì)
本示例(shìlì)使用+运算符来计算(jìsuàn)数值的和。
+运算符也可以(kěyǐ)用来做字符串的串接操作。
不过,最好还是使用&运算符来做字符串的串接操作(cāozuò)。
如果+运算符两边的表达式中混着字符串及数值的话,其结果会是数值的求和。
如果都是字符串作“相加”,则返回串接起来的字符串。
DimMyNumber,Var1,Var2
MyNumber=2+2'返回4。
MyNumber=4257.04+98112'返回102369.04。
Var1="34":
Var2=6'初始化混合变量的值。
MyNumber=Var1+Var2'返回40。
Var1="34":
Var2="6"'用字符串初始化混合变量的值。
MyNumber=Var1+Var2'返回"346"(字符串被串接起来)。
4、–运算符
用来求两数之差或表示数值表达式的负值。
语法1
result=number1-number2
语法2
-number
–运算符的语法具有以下几个部分:
部分
描述
result
必需的;任何数值变量。
number
必需的;任何数值表达式。
number1
必需的;任何数值表达式。
number2
必需的;任何数值表达式。
说明(shuōmíng)
在语法(yǔfǎ)1中,–运算符是求两数之差的算术减法(jiǎnfǎ)运算符。
在语法2中,–运算符为一元(yīyuán)负运算符,说明表达式的值为负值。
result的数据类型通常(tōngcháng)与最精确的表达式的数据类型相同。
精确度由最低到最高的顺序是Byte、Integer、Long、Single、Double、Currency和Decimal。
下列情况例外:
如果
则result为
当减法运算中有一个Single和一个Long,
转换成一个Double。
result的数据类型是一个Long、Single或Date变体,且超出正确范围,
转换成包含Double的Variant。
result的数据类型是一个Byte变体,且超出正确范围,
转换成一个Integer变体。
result的数据类型是一个Integer变体,且超出正确范围,
转换成一个Long变体。
减法运算中有Date和其它任何数据类型,
一个Date。
减法运算中有两个Date表达式,
一个Double。
如果有一个(yīɡè)或两个表达式是Null表达式,则result为Null。
如果(rúguǒ)一个表达式是Empty,则作为(zuòwéi)0处理。
注意(zhùyì)加法和减法用到的精确度等级(děngjí)与乘法用到的精确度等级不一样。
-运算符示例
本示例使用-运算符来计算两数值的差。
DimMyResult
MyResult=4-2'返回2。
MyResult=459.35-334.90'返回124.45。
5、/运算符
用来进行两个数的除法运算并返回一个浮点数。
语法
result=number1/number2
/运算符的语法具有以下几个部分:
部分
描述
result
必需的;任何数值变量。
number1
必需的;任何数值表达式。
number2
必需的;任何数值表达式。
说明
result的数据类型通常是Double或Double变体。
下列情况是例外:
如果
则result为
两个表达式都是Byte、Integer或Single表达式时,
一个Single,除非超出正确范围;如果发生这种情况,则产生错误。
两个表达式都是Byte、Integer或Single变体,
一个Single变体,除非已超出正确范围;一旦发生这种情况,result是一个包含Double的Variant。
除法运算中有一个Decimal及其它任何数据类型,
一个Decimal数据类型。
如果有一个(yīɡè)或是两个表达式是Null表达式,则result为Null。
如果(rúguǒ)一个表达式是Empty则作为(zuòwéi)0处理。
/运算符示例(shìlì)
本示例(shìlì)使用/运算符来计算浮点数除法。
DimMyValue
MyValue=10/4'返回2.5。
MyValue=10/3'返回3.333333。
6、\运算符
用来对两个数作除法并返回一个整数。
语法
result=number1\number2
\运算符的语法具有以下几个部分:
部分
描述
result
必需的;任何数值变量。
number1
必需的;任何数值表达式。
number2
必需的;任何数值表达式。
说明(shuōmíng)
在进行除法运算之前,数值表达式通过(tōngguò)舍去小数部分转换成Byte、Integer或Long表达式。
通常(tōngcháng),无论result是不是整数(zhěngshù),result的数据类型都是Byte、Byte变体(biàntǐ)、Integer、Integer变体、Long或Long变体。
任何小数部分都被删除。
但是,如果任何一个表达式是Null,则result为Null。
如果一个表达式是Empty,则作为0处理。
\运算符示例
本示例使用\运算符来计算整型除法。
DimMyValue
MyValue=11\4'返回2。
MyValue=9\3'返回3。
MyValue=100\3'返回33。
7、^运算符
用来求一个数字的某次方,次方数为exponent值。
语法
result=number^exponent
^运算符的语法具有(jùyǒu)以下几个部分:
部分
描述
result
必需的;任何数值变量。
number
必需的;任何数值表达式。
exponent
必需的;任何数值表达式。
说明(shuōmíng)
只有(zhǐyǒu)当exponent为整数(zhěngshù)值时,number才可以(kěyǐ)为负数。
在表达式中执行多个指数运算时,^运算符的计算顺序从左到右。
result的数据类型通常是Double或包含Double的Variant。
但是,如果number或exponent中有一个是Null表达式,则result也是Null。
^运算符示例
本示例使用^运算符来表示某数的乘方的指数值。
DimMyValue
MyValue=2^2'返回4。
MyValue=3^3^3'返回19683。
MyValue=(-5)^3'返回-125。
8、=操作符
描述
用于对一个(yīɡè)变量(biànliàng)或属性(shǔxìng)赋值。
语法(yǔfǎ)
variable=value
=操作符语法有如下(rúxià)几部分:
部分
描述
variable
任何变量或任何可写的属性。
value
任何数值型或字符串文字、常数或表达式。
说明
等号左边的名字可以是一个简单的标量变量或一个数组的元素。
等号左边的属性只能是运行时可写的属性。
9、AddressOf运算符
一个一元运算符,它将其后面的过程的地址传递给一个API过程,该API过程在参数表对应位置中需要一个函数指针。
语法
AddressOfprocedurename
必需的procedurename指定要传递的地址是哪一个过程的地址。
这个过程必须是发出调用命令的工程中的一个标准模块模块里的一个过程。
说明(shuōmíng)
当一个过程的名称出现在一个参数列表(lièbiǎo)中时,通常该过程已经被计算,并且该过程返回值的地址也会被传递。
AddressOf允许(yǔnxǔ)该过程的地址被传递给动态链接库(DLL)中的一个WindowsAPI函数,而不是传递该过程的返回值。
API函数然后就可以使用这个地址(dìzhǐ)来调用相应的Basic过程,这个过程就是我们所知道的回调。
AddressOf运算符只出现在对API过程(guòchéng)的调用中。
尽管可以使用AddressOf运算符在Basic过程之间传递过程指针,却不能通过这样的一个指针从Basic内部调用一个函数。
这就是说,例如,一个使用Basic编写的类不能使用这样的一个指针来回调自己的控制器。
当使用AddressOf运算符在Basic内的过程之间传递一个过程的指针时,被调用过程的参数类型必须定义为AsLong。
警告如果不能完全理解函数回调的概念,则使用AddressOf运算符可能会导致意想不到的结果。
必须理解回调的Basic部份是如何工作的,以及接受所传递的函数地址的DLL的代码是如何工作的。
调试这样的交互操作是非常困难的,因为该程序和开发环境运行在相同的进程中。
在某些情况下,系统的调试也许是不可能的。
注意可以使用MicrosoftVisualC++(或者类似的工具)编译的DLLs来创建自己的回调函数原型。
要使用AddressOf运算符来工作,您的原型必需使用__stdcall调用约定。
缺省的调用约定(__cdecl)不能与AddressOf运算符一起工作。
因为(yīnwèi)一个回调的调用程序不在用户自己的程序中,所以很重要的一点是要保证回调过程中的错误不被回传到调用者。
可以通过把OnErrorResumeNext语句放置(fàngzhì)于回调过程的起始处来达到这个要求。
AddressOf运算符示例(shìlì)
下面的示例创建一个(yīɡè)带有一个列表框的窗体,该列表框包含您的系统中的字体的按字母顺序排序的列表。
要运行该示例(shìlì),请创建一个带有一个列表框的窗体。
窗体部分的代码如下:
OptionExplicit
PrivateSubForm_Load()
Module1.FillListWithFontsList1
EndSub
把下面的代码放置到一个模块中。
EnumFontFamilies函数定义中的第三个参数是一个长整形,它代表一个过程。
该参数必须包含这个过程的地址,而不是这个过程的返回值。
在对EnumFontFamilies的调用中,第三个参数需要AddressOf运算符来返回EnumFontFamProc过程的地址,该过程是当调用WindowsAPI函数,即EnumFontFamilies时提供的回调过程的名称。
当把AddressOfEnumFontFamProc传递给EnumFontFamilies时,Windows就会为系统中的每一个字体库调用一次EnumFontFamProc。
传递给EnumFontFamilies的最后一个参数指定用来显示信息的列表框。
'字体枚举(méijǔ)类型
PublicConstLF_FACESIZE=32
PublicConstLF_FULLFACESIZE=64
TypeLOGFONT
lfHeightAsLong
lfWidthAsLong
lfEscapementAsLong
lfOrientationAsLong
lfWeightAsLong
lfItalicAsByte
lfUnderlineAsByte
lfStrikeOutAsByte
lfCharSetAsByte
lfOutPrecisionAsByte
lfClipPrecisionAsByte
lfQualityAsByte
lfPitchAndFamilyAsByte
lfFaceName(LF_FACESIZE)AsByte
EndType
TypeNEWTEXTMETRIC
tmHeightAsLong
tmAscentAsLong
tmDescentAsLong
tmInternalLeadingAsLong
tmExternalLeadingAsLong
tmAveCharWidthAsLong
tmMaxCharWidthAsLong
tmWeightAsLong
tmOverhangAsLong
tmDigitizedAspectXAsLong
tmDigitizedAspectYAsLong
tmFirstCharAsByte
tmLastCharAsByte
tmDefaultCharAsByte
tmBreakCharAsByte
tmItalicAsByte
tmUnderlinedAsByte
tmStruckOutAsByte
tmPitchAndFamilyAsByte
tmCharSetAsByte
ntmFlagsAsLong
ntmSizeEMAsLong
ntmCellHeightAsLong
ntmAveWidthAsLong
EndType
'ntmFlags段标志(biāozhì)
PublicConstNTM_REGULAR=&H40&
PublicConstNTM_BOLD=&H20&
PublicConstNTM_ITALIC=&H1&
'tmPitchAndFamily标志(biāozhì)
PublicConstTMPF_FIXED_PITCH=&H1
PublicConstTMPF_VECTOR=&H2
PublicConstTMPF_DEVICE=&H8
PublicConstTMPF_TRUETYPE=&H4
PublicConstELF_VERSION=0
PublicConstELF_CULTURE_LATIN=0
'EnumFonts掩码
PublicConstRASTER_FONTTYPE=&H1
PublicConstDEVICE_FONTTYPE=&H2
PublicConstTRUETYPE_FONTTYPE=&H4
DeclareFunctionEnumFontFamiliesLib"gdi32"Alias_
"EnumFontFamiliesA"_
(ByValhDCAsLong,ByVallpszFamilyAsString,_
ByVallpEnumFontFamProcAsLong,LParamAsAny)AsLong
DeclareFunctionGetDCLib"user32"(ByValhWndAsLong)AsLong
DeclareFunctionReleaseDCLib"user32"(ByValhWndAsLong,_
ByValhDCAsLong)AsLong
FunctionEnumFontFamProc(lpNLFAsLOGFONT,lpNTMAsNEWTEXTMETRIC,_
ByValFontTypeAsLong,LParamAsListBox)AsLong
DimFaceNameAsString
DimFullNameAsString
FaceName=StrConv(lpNLF.lfFaceName,vbUnicode)
LParam.AddItemLeft$(FaceName,InStr(FaceName,vbNullChar)-1)
EnumFontFamProc=1
EndFunction
SubFillListWithFonts(LBAsListBox)
DimhDCAsLong
LB.Clear
hDC=GetDC(LB.hWnd)
EnumF