按键精灵指导.docx
《按键精灵指导.docx》由会员分享,可在线阅读,更多相关《按键精灵指导.docx(32页珍藏版)》请在冰豆网上搜索。
按键精灵指导
第一章变量的使用
不论是在VBScript的程序或任何其他的程序语言中,有一个最重要的也是最基本的概念叫做变量,因为写程序的目的在于,写出的程序在大部分的情况都可以执行出正确的结果。
就如同一个卖篮球鞋的厂商出了一双又好看又耐穿的球鞋,但是这款球鞋只有唯一的一个尺寸,如此一来,就算鞋子再好,消费群也只是那一小部分人。
程序也是一样的,好的程序就必须给程序使用者多一点弹性,程序才能发挥它最大的用处。
想做到这一点,就必须使用变量来编写程序了。
那变量到底是用来做什么的呢?
简单说,变量就是用来存储某些信息,有可能是存储一些计算结果、人的姓名、字符串输入的正确性等等。
每当程序使用了一个变量,程序就会吧资料写到计算机的内存中,等程序需要它的时候就可以从内存中拿出来使用了,这就是变量最常被使用的方法。
本章重点介绍如何在VBScript中声明及应用变量。
一变量的声明
既然变量很重要,那就先来看看要如何产生一个变量。
变量的命名要遵守下列几个规则。
■开头必须是一个字母。
■要在255个字符之内,这一点不需要太担心,如果一个变量名字长达255个字符的话,相信没几个人能自己记得住。
■可以使用任何字符、数字及下划线,但是不可以使用空格。
■不可以使用VBScript会用到的运算符号,例如+、-、*、/等。
■不可以使用VBScript中使用到的保留字,例如MID、DIV等。
由于VBScript是由Microsoft发展出来的语言,所以它的命名的规则还是遵照它一贯的设置,变量的名称是没有大小写之分的,例如:
变量名MyClass和变量名myclass是一样的。
要在VBScript中声明一个变量,方法是利用Dim指令,在这个函数后面加上一个符合变量命名规则的名称,就等于建立了一个新的变量,例如:
Dimcustomers
在VBScript中,变量的产生分为两种,一种就是用Dim声明,另外一种就是直接给变量赋值,如此变量自然就存在了。
不过有一点需要注意,VBScript不允许在声明变量的同时给这个变量赋值,如下的声明是不被允许的。
DimTotal=0
必须要把声明变量跟给变量赋值分开,如下
DimTotal
Total=0
二变量的数据类型
变量有多种数据类型,不同的数据类型有不同的用处,也有不同的使用方法。
下面介绍最常用的7种数据类型。
※字符串
字符串就是有由引号(“”)括起来的一串字符组合成的,其中,可以包括任何英文字母、中文字、数字、符号等,所有可以在计算机上看到的字都可以是字符串的内容。
理论上,字符串变量最多可以处理多达20亿的字符,如此一来,对绝大部分的人而言,可以不考虑这个限制,因为很少会有人用到这么长的字符串。
字符串声明实例:
FirstName="zhao"
TelNumber="13975150494"
Address="湖南省长沙市芙蓉区曙光北路**号**楼"
※整数
整数变量的范围在-32768~32768之间,这也是在计算上最常用到的一种数据类型。
整数声明实例:
Age=32
Degree=-5
AllowancePerDay=200
※长整数
这个数据类型跟整数几乎可以划上等号,只不过这个数据类型的范围比较大,它的范围在-2147483648~2147483647之间
事实上,整数跟长整数所代表的意义并没有不同,计算的反复法也一样,只是由于整数在计算机中是用2个字节存储,而长整数则是用4个字节存储,这对计算机的内存存取的方式而言是有差别的,但是从使用者的角度来看,应该说是没有太大的区别,而且在VBScript的使用上,如果使用者使用的整数变量超出范围,编译器也会自动帮助使用者转换成长整数的数据类型以输出正确的数字,并不至于发生错误。
例如:
DimA
A=30000
A=60000
在程序执行到第二行的时候,变量A的数据类型是整数,而在执行到第三行的时候,60000已经超出了整数的表示范围,变量A的数据类型就会自动变成长整数。
※单精度小数
这是有关小数的一种数据类型,用来存储程序中的小数。
而精度是小数点后面的7位数,如果包含小数点前面的整数,最多可以有40位可以使用,一般在VBScript中用到的小数都属于这个数据类型。
单精度小数声明实例:
MathGrades=88.5
PI=3.1415926
DegreeofPole=-43.56
※双精度小数
这种数据类型跟单精度小数很类似,只不过可以使用的位数不一样。
双精度小数的精确度可以达到小数点后面15位数,如果包含小数点前面的整数,可以使用300位的数字。
基本上,在VBScript中,这种数据类型的使用可以说是少之又少,如果需要用到小数计算,单精度的小数就已经很够用了,通常不会需要这种精确度的小数。
※布尔型
这是一个比较特殊的数据类型,因为它的值就只有两种,一个是真(True),一个是假(False)。
这个数据类型最常见的用途就是用来存储两个数据比较的结果,接下来就可以根据比较后的真(True)或假(False)来决定执行哪一段程序
布尔型声明实例:
TooMuch=False
Failure=True
※日期
这种数据类型可以让使用者存储时间和日期,它的范围是从公元1100年1月1日午夜12点~公元9999年12月31号的午夜12点。
日期和时间必须在“#”字号之间。
如果设定的数值布包含日期,VBScript会自动折成12点,若要加入时间,可以使用上午/下午(AM/PM)或24小时制的方式。
日期型声明实例:
HerBirth=#June25,1977#
ThisMoment=#March3,200010:
01PM#
ThisMoment=#march3,200022:
01#
在写程序的过程中,常常会遇到一个情形就是比较两个数值,但是,布同的数据类型是不能够做比较的,因为哪是没有意义而且会在执行时发生运行时错误的。
例如:
拿字符串"pen"跟整数500来作比较,这种比较在VBScript中是布允许的。
变量只要运用得当,不要让不同类型的变量作比较或者是让变量超出它原本设定的范围,就应该不会出什么问题了。
在按键精灵中使用变量需要注意以下几个方面(以后如果没有特殊说明,均以《按键精灵6.0》为例):
■定义变量(Dim)和给变量赋值的指令前需加上VBS标记。
例如:
VBSDimname
VBSname="zhao"
■按键精灵中VBSCallReadMemory(读取内存地址)指令得到的数据是一个字符串数据,在进行比较、计算的时候,注意数据间的类型是否匹配。
三数组
数组,简单的说就是由一堆数值依照顺序排列在一起,放在同一个变量中,而每个数值都可以利用索引来得到数组中所存储的信息。
跟变量不同的是,数组在使用之前必须经过声明,否则会因为程序无法知道必须保留多少的内存空间给这个数组使用而导致程序执行时错误。
数组变量和变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号()。
下例声明了一个包含11个元素的一维数组:
DimA(10)虽然括号中显示的数字是10,但由于在VBScript中所有数组都是基于0的,所以这个数组实际上包含11个元素。
在基于0的数组中,数组元素的数目总是括号中显示的数目加1。
这种数组被称为固定大小的数组。
在数组中使用索引为数组的每个元素赋值。
从0到10,将数据赋给数组的元素,如下所示:
A(0)=256A
(1)=324A
(2)=100...A(10)=55与此类似,使用索引可以检索到所需的数组元素的数据。
例如:
...SomeVariable=A(8)...数组并不仅限于一维。
数组的维数最大可以为60(尽管大多数人不能理解超过3或4的维数)。
声明多维数组时用逗号分隔括号中每个表示数组大小的数字。
在下例中,MyTable变量是一个有6行和11列的二维数组:
DimMyTable(5,10)在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
很多没有学过编程的朋友会觉得,已经有了变量的存在,还要这个数组变量做什么呢?
我们来举个例子:
班上有50个同学,现在我们要记录这50个同学考试成绩,有两种方法
■变量法:
DimScore1,Score2,Score3......Score50
Score1=79
Score2=92
......
Score50=88
■数组变量法
DimScore(50)
Score
(1)=79
Score
(2)=92
......
Score(50)=88
现在看来,这两种方法的区别不大。
只是变量法需要声明50个名字,而数组变量法只需要为所有的变量取一个名字。
在查询相应的数据(成绩)的时候,方法也差不多。
那么接下来,我们不但要记录50个同学的成绩,而且为了把同学和他们的成绩对上号,我们同时需要记录50个同学的学号。
同样的,有两种方法:
■变量法:
DimScore1,Score2,......Score50
DimNomber1,Nomber2,......Nomber50
Score1=79
Nomber1=1
Score2=92
Nomber2=2
......
Score50=88
Nomber50=50
■数组变量法
DimStudent(50,2)
Student(1,1)=79
Student(1,2)=1
Student(2,1)=92
Student(2,2)=2
......
Student(50,1)=88
Student(50,2)=50
现在再看,变量法使用了100个变量名,而数组变量法依旧只用了一个变量名。
更重要的是,在查询相关数据的时候,数组变量法中只需要很简单的提供维数就可以查到需要的数据,而变量法中要查询相关的数据就必须先判断头一个数据是什么,才可以查到它相对应的另一个数据。
在按键精灵中,数组变量的使用方法跟前面提到的变量的使用方法相同。
第二章VBScript的基本运算
一概论
VBScript有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。
运算符优先级当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。
可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。
运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。
但是,在括号中仍遵循标准运算符优先级。
当表达式包含多种运算符时,首先计算算术运算符,然后计算比较运算符,最后计算逻辑运算符。
所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。
算术运算符和逻辑运算符的优先级如下所示:
■算术运算符
描述符号
■比较运算符
描述符号
■逻辑运算符
描述符号
当乘号与除号同时出现在一个表达式中时,按从左到右的顺序计算乘、除运算符。
同样当加与减同时出现在一个表达式中时,按从左到右的顺序计算加、减法运算符。
字符串连接(&)运算符不是算术运算符,但是在优先级顺序中,它排在所有算术运算符之后和所有比较运算符之前。
Is运算符是对象引用比较运算符。
它并不比较对象或对象的值,而只是进行检查,判断两个对象引用是否引用同一个对象。
二需要注意的
■VBScript是一种数据类型限制非常弱的语言。
例如日期可以跟数字相加;还有,如果一个字符串的内容都是数字所组成,没有包含任何其它的符号时,字符串还是可以拿来作乘法及除法的运算,也就是说,VBScript就会自动把数据类型转成可以运算的形式加以运算。
不过大家尽量要避免把两个数据类型不同的变量相加,以免发生执行阶段的错误或是发生不可预料的结果。
■在VBScript中,数字的四舍五入和我们平常习惯的四舍五入有点不同,如果数字不是刚好在两个相邻正整数的中点(如2.5、3.5等)的话,它的规则就是四舍五入。
但是如果刚好是这些数的话,转换的方式就是变成最接近的正偶数,因此,2.5取整数会得到2,3.5取整数会得到4。
在VBScript中如果有牵涉到把小数转换成整数的话,都是用这个规则来进行转换。
在按键精灵中,基本都支持这些运算符,同样的,需要注意的事项也适用
第三章VBScript基本函数
函数,简单的说,可以看成是一个表达式,输入一个值给函数,函数就会返回结果值(也有的函数没有返回值)。
例如:
函数A(B)=C代表名称为A的函数,当输入B值给A函数时,函数经过执行后会返回结果值C,这就是函数最基本的运用方式。
在VBScript中有相当多的函数可以用,使用这些函数的时候,不必知道,也不必看到这些函数到底如何处理所输入的参数,我们只要知道然后去使用这些函数就可以了。
下面,我将给大家分类介绍各函数的使用方法。
一与数字运算有关的函数
■Abs函数
返回数字的绝对值。
Abs(number)
number参数可以是任意有效的数值表达式。
如果number包含Null,则返回Null;
如果是未初始化变量,则返回0。
说明
数字的绝对值是其无符号的数值大小。
例如,Abs(-1)和Abs
(1)都返回1。
下面示例利用Abs函数计算数字的绝对值:
DimMyNumber
MyNumber=Abs(50.3)'返回50.3。
MyNumber=Abs(-50.3)'返回50.3。
■Sgn函数
返回表示数字符号的整数。
Sgn(number)
number参数可以是任意有效的数值表达式。
返回值Sgn函数有如下返回值:
如果number为Sgn返回
说明
number参数的符号决定Sgn函数的返回值。
下面的示例利用Sgn函数决定数值的符号:
DimMyVar1,MyVar2,MyVar3,MySign
MyVar1=12:
MyVar2=-2.4:
MyVar3=0
MySign=Sgn(MyVar1)'返回1。
MySign=Sgn(MyVar2)'返回-1。
MySign=Sgn(MyVar3)'返回0。
■Hex函数
返回表示十六进制数字值的字符串。
Hex(number)
number参数是任意有效的表达式。
说明
如果number参数不是整数,则在进行运算前将其四舍五入为最接近的整数。
如果number是Hex返回
您可以通过在数字前面添加前缀&H来表示十六进制数。
例如,在十六进制计数法中,&H10表示十进制数16。
下面的示例利用Hex函数返回数字的十六进制数:
DimMyHexMyHex=Hex(5)'返回5。
MyHex=Hex(10)'返回A。
MyHex=Hex(459)'返回1CB。
■Oct函数
返回表示数字八进制值的字符串。
Oct(number)
number参数是任意有效的表达式。
说明
如果number参数不是整数,则在进行运算前,将其四舍五入到最接近的整数。
如果number是Oct返回
用户也可以通过直接在数前加上&O表示八进制数。
例如,&O10为十进制数8的八进制表示法。
下面的示例利用Oct函数返回数值的八进制数:
DimMyOctMyOct=Oct(4)'返回4。
MyOct=Oct(8)'返回10。
MyOct=Oct(459)'返回713。
■Sqr函数
返回数值的平方根。
Sqr(number)
number参数可以是任意有效的大于或等于零的数值表达式。
说明
下面的示例利用Sqr函数计算数值的平方根:
DimMySqrMySqr=Sqr(4)'返回2。
MySqr=Sqr(23)'返回4.79583152331272。
MySqr=Sqr(0)'返回0。
MySqr=Sqr(-4)'产生实时错误。
■Int,Fix函数
返回数字的整数部分。
Int(number)
Fix(number)
number参数可以是任意有效的数值表达式。
如果number参数包含Null,则返回Null。
说明
Int和Fix函数都删除number参数的小数部分并返回以整数表示的结果。
Int和Fix函数的区别在于如果number参数为负数时,Int函数返回小于或等于number的第一个负整数,而Fix函数返回大于或等于number参数的第一个负整数。
例如,Int将-8.4转换为-9,而Fix函数将-8.4转换为-8。
Fix(number)等同于:
Sgn(number)*Int(Abs(number))
下面的示例说明Int和Fix函数如何返回数字的整数部分:
MyNumber=Int(99.8)'返回99。
MyNumber=Fix(99.2)'返回99。
MyNumber=Int(-99.8)'返回-100。
MyNumber=Fix(-99.8)'返回-99。
MyNumber=Int(-99.2)'返回-100。
MyNumber=Fix(-99.2)'返回-99。
■Round函数
返回按指定位数进行四舍五入的数值。
Round(expression[,numdecimalplaces])
参数Expression必选项。
数值表达式被四舍五入。
Numdecimalplaces可选项。
数字表明小数点右边有多少位进行四舍五入。
如果省略,则Round函数返回整数。
说明
下面的示例利用Round函数将数值四舍五入到两位小数:
DimMyVar,pi
pi=3.14159
MyVar=Round(pi,2)'返回3.14。
■Log函数
返回数值的自然对数。
Log(number)
number参数是任意大于0的有效数值表达式。
说明
自然对数是以e为底的对数。
常数e的值约为2.718282。
用n的自然对数除x的自然对数,可以得到以n为底的x的对数。
如下所示:
Logn(x)=Log(x)/Log(n)
以下示例为一个自定义的Function过程,该过程计算以10为底的对数:
FunctionLog10(X)
Log10=Log(X)/Log(10)
EndFunction
■Exp函数
返回e(自然对数的底)的幂次方。
Exp(number)
number参数可以是任意有效的数值表达式。
说明
如果number参数超过709.782712893,则出现错误。
常数e的值约为2.718282。
注意Exp函数完成Log函数的反运算,并且有时引用为反对数形式。
下面的示例利用Exp函数返回e的幂次方:
DimMyAngle,MyHSin'用弧度定义角。
MyAngle=1.3'计算双曲线的正弦。
MyHSin=(Exp(MyAngle)-Exp(-1*MyAngle))/2
■三角函数Sin、Cos、Tan、Atn
Sin(number)正弦
Cos(number)余弦
Tan(number)正切
Atn(number)反正切
number参数可以是任何将某个角表示为弧度的有效数值表达式。
说明
将角度乘以pi/180即可转换为弧度,将弧度乘以180/pi即可转换为角度。
示例:
DimMyAngle,MyCotangent
MyAngle=1.3'用弧度定义角度。
MyCosecant=1/Sin(MyAngle)'计算余割。
MySecant=1/Cos(MyAngle)'计算正割。
MyCotangent=1/Tan(MyAngle)'计算余切。
二与字符串处理有关的函数
■Len函数
返回字符串内字符的数目,或是存储一变量所需的字节数。
Len(string|varname)
参数
sring任意有效的字符串表达式。
如果string参数包含Null,则返回Null。
Varname任意有效的变量名。
如果varname参数包含Null,则返回Null。
说明
下面的示例利用Len函数返回字符串中的字符数目:
DimMyStringMyString=Len("VBSCRIPT")'MyString包含8。
■Mid函数
从字符串中返回指定数目的字符。
Mid(string,start[,length])
参数
string字符串表达式,从中返回字符。
如果string包含Null,则返回Null。
Startstring中被提取的字符部分的开始位置。
如果start超过了string中字符的数目,Mid将返回零长度字符串("")。
Length要返回的字符数。
如果省略或length超过文本的字符数(包括