资源描述
fotable软件开发基础使用说明指导书
写给初学者
如果你是初次接触编程,那么我们给你几个非常重要的建议:
一、凡事就怕不敢入门
虽然Foxtable看上去比易表难了一些,但是只要你静下心来看帮助,你会发现其实并没有难到哪去,深入之后,你也许会觉得更容易。
凡事就怕不敢入门,一旦入门就会觉得:不过如此嘛!
二、不要尝试去记住一切
学习编程的重点,不是记住什么,而是要了解每一段示例代码的原理和逻辑。
要知道,优秀的程序员之所以优秀,绝不是因为他们记住了什么,他们和你我一样,需要不停地借助帮助文件。
三、不要急于求成
磨刀不误砍柴工,心急也吃不得热豆腐。
帮助文件非常详细,提供了大量的示例,内容也是循序渐进的,只要你多点耐心,就一定能掌握。
有的用户只是粗略地看了一次帮助,连基本的概念都没有掌握,就开始开发系统,结果往往是事倍功半。
四、实践出真知
要想全面、深入地掌握Foxtable,在学习初期,应该将帮助中的示例全部实际操作一次,以便加深印象。
学习的后期,可以自己尝试写一写代码进行测试,特别是有疑惑的地方。
五、三人行必有我师
如果你在学习和应用的过程中遇到难题,自己无法解决,可以访问Foxtable社区。
在寻求帮助的同时,也别忘记帮助他人,让我们一起进入Foxtable编程的奇妙天地,一起来提高吧。
Foxtable社区地址:
最重要的两章
Foxtable的开发篇非常庞大,其中最重要的有两章,分别是《编程基础》和《Foxtable编程》。
这两章既是基础,又是精华,可以说掌握了这两章的内容,剩余的内容都是“小菜”,因为开发篇除这两章之外的内容,基本上都是参考性质,在学习的过程中,只需做到有所了解即可,在实际开发的时候再来查阅。
所以我们在学习开发篇的时候,应该在这两章花上最多的精力,特别是《Foxtable编程》这一章,要反复看,细致看,多实践,只有基础打好了,才能融会贯通,才能在开发过程中做到游刃有余。再好的程序员,也不能保证自己的代码和设置100%正确,肯定要反复调试,才能最终达到目标。一些错误可能直到运行的时候才被发现,普通的错误没关系,重新修改代码和设置即可;不过有的错误可能非常严重,以致每次打开项目文件时,Foxtable就会崩溃退出,或者无法正常进入操作界面;怎样才能回到正常的操作界面,给开发者提供更改错误的机会呢?
很简单,首先按住Ctrl键,然后打开出现错误的项目文件,直到项目文件被完全打开,再松开Ctrl键即可。如果打开的过程中出现了登录窗口,先松开Ctrl键,选择以开发者身份登录,输入密码,然后重新按住Ctrl键,单击登录窗口的确定按钮,直到项目文件被完全打开,再松开Ctrl键。
以这种方式打开的项目文件:
1、不会执行用户代码。
2、外部表不会加载数据,只加载结构。
3、系统菜单将代替用户菜单。
在修改错误代码和设置后,重新打开项目文件。
提示:如果你确认你的代码没有问题,但是还是出现莫名其妙的错误,可以尝试先删除项目目录下的子目录Catch,然后重新打开项目。FoxTable使用的编程语言是Visual Basic,即使您完全没有接触过编程,也不用担心,因为Foxtable使用的只是Visual Basic中很少的一部分,大多数人都可以在短时间内掌握。Visual Basic近似于自然语言,不区分大小写,非常适合普通用户学习使用,这就是我们选择Visual Basic作为用户二次开发语言的原因。Visual Basic编程是面向对象的,而面向对象的编程,就离不开属性、方法和事件。程序开发的任务,就是根据用户的动作与要求来设置属性、执行方法和响应事件。那么什么是属性、方法和事件呢?我们暂不讲编程,先来一个现实生活的例子,例如对于一辆汽车来说:
1、品牌、型号、颜色、座椅个数、发动机排量等等,就是汽车的属性。
2、启动、熄火、转弯、刹车就是汽车的方法,汽车通过执行这些方法来完成日常工作。
3、为什么踩油门会加速,而踩刹车会减速? 这是因为驾驶员的每一个操作,都会被当作一个“事件”,并通过传感装置通知到汽车的控制系统。再来看Foxtable中的表,表名、行数、列数就是它的属性;增加行、删除行就是它的方法;而执行方法,又会引发对应的事件,通知系统某个表已经增加了一行、已经删除了一行。任何你在Foxtable中所看到的,包括表,行、列,窗口、菜单等等,都可以看作是一个对象,有自己的属性、方法和事件。
甚至简单到一个数据,也可以看作是一个对象,也会有自己的属性、方法;例如一个字符串,它也有自己的属性,例如长度,还有自己的方法,例如替换、插入、大小写转换等等。
数据类型
Visual Basic 有以下数据类型:
数据类型
说明
String
任意个数的字符,常称为字符串。
Date
日期时间
Boolean
逻辑值,逻辑值就两个,分别是True(是)和False(否)。
Byte
微整数,介于 0 到 255 之间的微整数
Short
短整数,介于 –32768 到 32767 之间的短整型
Integer
整数,介于 –2147483648 到 2147483647 之间的整数。
Long
长整数,值的范围为 -9223372036854775808 到 9223372036854775807。
Single
单精度小数,单精度小数,有效数字为7位。
Double
双精度小数,有效数字为15位。
Decimal
高精度小数,有高达28位的有效数字,适用于要求使用大量有效的整数及小数位数并且没有舍入错误的财务计算。
Object
通用型,可存放任何类型的数据。
数值类型较多,一般情况下,小数用Double型,整数用Integer型即可,如果整数范围较大,可以用Long型。我们最常用的数据类型是:String、Date、Boolean、Integer、Long、Double。
什么是有效数字?
简单地说,就是从左边第一个不是0的数字算起,直到最后一个数字,就是一个数值的有效数字,例如1.324的有效数字是4位(1、3、2、4),1.3240的有效数字是5位(1、3、2、4、0),而0.024的有效数字是两位(2、4)。
声明变量
变量用来在执行代码的过程中临时存放数据,要使用一个变量,必须先声明它。
声明一个变量,就是要指定变量的名称和它的数据类型。
声明变量的语法是:
Dim 变量名 As 数据类型
例如:Dim Name As String
表示声明了一个新的String(字符串)型变量,变量名为“Name”。
再例如:Dim riqi As Date
表示声明了一个新的Date(日期)型变量,变量名为“riqi”。
可以在定义变量的同时指定其初始值,例如:
Dim Name As String = "foxtable"
表示声明了一个新的String(字符串)型变量,变量名为“Name”,初始值为“foxtable”。
可以在同一行定义多个变量,前提是这些变量的类型相同,变量名之间用逗号分割,例如:
Dim Val1,Val2 As Integer
Dim Str1,Str2 As String
上面的代码,定义了两个整数型变量Val1、Val2,以及两个字符型变量Str1、Str2。提示:上面出现的彩色字符,是Foxtable的代码编辑器自动加上去的,只是为了便于阅读,并无特殊的意义。
关于变量名
变量名称必须以字符或者下划线( _ )开始,而且至少应该包括一个字符或者数字。
变量名不能包含除下划线( _ )之外的符号和空格。变量名也不能是关键词,所谓关键词,就是对Visual Basic有特殊意义的单词,例如上面的Dim、As。关键词有几百个,你很难全部记住的,但你只要记住一点,如果输入代码,单击“确定”按钮后,提示“关键词作为标识符无效!”,那么就表明你可能用关键词作为变量名了。
圆点符号
任何对象的方法和属性,都必须通过圆点符号才能调用和访问,例如:
Dim d As Date
Dim i As Integer
i = d.Month
d = d.AddDays(36)
日期型数据有一个属性Month,用于返回该日期的月份,我们通过圆点符号来访问该属性:
i = d.Month 现在变量i的值等于日期d的月份。
日期型数据有一个AddDays方法,用于给日期加上指定的天数,并返回新的日期,我们同样通过原点符号调用这个方法:d = d.AddDays(36)
现在变量d等于原日期加上36天后的新日期。上面的属性和方法我们会在后续章节介绍,你现在只需了解圆点符号的用法即可。
共享成员
例如我们定义了一个日期变量d,那么通过该变量的Month属性可得到其月份值:
Dim d As Date = #12/31/2008#
Dim i As integer = d.Month
上面的代码通过Month属性获得日期型变量d的月份值,并保存在整数型变量i中。
Month属性和具体的日期变量相关,不同的日期变量,Month属性返回不同的值;事实上,绝大多数属性,都和Month属性一样,是和具体变量相关的。但是有一些属性是不同的,它不是通过变量,而是通过类型名称访问,例如要得到今天的日期值:
Dim d As Date
d = Date.Today
上面的代码将今天的日期值保存在变量d中。请注意用于返回当天日期值的Today属性,它不属于任何一个日期型变量,而是属于日期类型Date,我们直接通过Date类型来访问这个属性。
这很好理解,Today这个属性返回的是今天的日期值,和具体的日期变量无任何关系。我们将这种直接通过类型名称访问的属性,称为共享属性。同样直接通过类型名称执行的方法,称为共享方法。在这里,共享的意思就是:大家共用的,不属于某个具体变量的。
命令窗口
这一节并不是Visual Basic的内容,但是为了便于我们接下来的学习,我们有必要先插入这么一节。我们在学习的过程中,会接触到大量的示例代码,有时我们有必要通过执行示例代码,来加深印象、解除疑虑。命令窗口可以直接输入并执行代码。
执行代码
在“杂项”功能区,单击下面的按钮,可以打开命令窗口:
命令窗口右下角有一个“执行”按钮,用于执行你输入的代码:
查看执行结果
Foxtable提供了一个Output类型,该类型有一个共享方法Show,用于在命令窗口显示信息。
例如将下面的代码复制到命令窗口执行:
Dim i1 As Integer = 1
Dim i2 As Integer
i2 = i1 * 2
Output.Show(i2)
Output.Show显示的信息,位于命令窗口的信息显示区,具体位置请看下面的图片:
重要特性
命令窗口为非模式窗口,可以在不关闭命令窗口的情况下,继续进行其它操作,例如编辑数据、执行菜单命令等等。
命令窗口的辅助功能
词汇:对于初学编程的人来说,记住Integer、Double、String这些单词不是一件很容易的事,英文基础差的用户更甚。不过没关系,命令窗口的词汇页,列出了所有的常见词汇,双击某个词汇,即可自动输入该词汇:
字段
在编写代码的时候,要记住所有的表名和列名,几乎是一个不可能的任务。
其实完全不需要为此担心,命令窗口的字段页列出了所有表的字段(列),双击即可自动插入字段名。
你还可以选择插入的字段名是否用双引号或单引号括起来,还是不需要任何引号。
帮助
命令窗口的帮助页内置了整套帮助文档,可以让大家更便捷地获得帮助。
不过我个人不太喜欢这个内置的帮助,我觉得独立的帮助文档使用起来更方便。
命令窗口的自动输入功能
在命令窗口输入:
Dim x As d
然后按Tab键,将列出所有以d开头的类型供选择:
按上下箭头键移动光标,可以选择类型,将光标移到Date,按回车即可输入类型Date:
回车后,按下图所示输入"x.",然后按Tab键,系统会自动判断出变量x为日期型,然后列出日期类型所有的方法和属性供选择:
选择AddMonths,然后按回车,会自动输入AddMonths,同时显示AddMonths的帮助:
不是任何时候都需要选择的,例如输入:
Dim x As String
x.e
按Tab键,会自动输入EndsWith:
Dim x As String
x.EndsWith
这是因为x是一个字符型变量,而字符型变量以E开头的属性或者方法,就只有EndsWith。
再例如:
Dim x As String
x.r
按Tab键,将列出字符型以r开头的属性和方法:
显然手工输入能记住的开头字符,可以更加快速的定位所需要的成员。
目前介绍的是命令窗口(代码编辑器)的基本功能,其它功能,我们会随着学习的深入逐个介绍。
可以看到,在Foxtable中编写代码,并不需要死记的,不仅可以自动输入类型、属性和方法,甚至连帮助都是自动显示的。
自动全角转换和着色
在默认的情况下,代码编辑器会自动将全角字符转换为半角,如果你不喜欢这种强制转换,可以在第一行代码输入:'''。
例如:
'''
Dim s1 As String
s1 = "我喜欢Foxtable,因为..."
Output.Show(s1)
此外编辑器会用不同的颜色标出各种关键词,以及表名和列名,如果你的电脑性能不太好,代码又比较长,这种代码自动着色的功能会耗费较长的时间,此时你只需在第一行输入"'...",即可关闭自动着色。
例如:
'...
Dim s1 As String
s1 = "我喜欢Foxtable,因为..."
Output.Show(s1)
如果你希望同时关闭全角转换和着色,只需在第一行输入"'''..."。
例如:
'''...
Dim s1 As String
s1 = "我喜欢Foxtable,因为..."
Output.Show(s1)
代码注释
给代码的关键位置加上注释,是一个很好的习惯。
注释以符号 '开始,通常是单独一行,或者位于某一行代码之后。
如果注释和代码在同一行,注释和代码之间应该至少有一个空格。
注释不会对代码的运行有任何影响。
例如:
'下面的代码用于测试Month属性,请复制到命令窗口执行
Dim d1 As Date '定义变量d1
d1 = #12/31/2008# '给变量赋值
Output.Show(d1.Month) '在命令窗口显示月份
上面的代码只是为了说明如何加注释,实际使用的时候,只需给关键的位置加上注释即可,太多的注释,反而会影响代码的可读性。
在代码编辑窗口,注释的颜色为灰色。
字符常量
字符型常量用双引号括起来,例如:
Dim s As String
s = "NBA"
等效于:
Dim s As String = "NBA"
表示定义一个字符变量s,并将s的值设为“NBA”。
可以在定义变量的时候,设定该变量为指定个数的某字符组成,语法为:
Dim 变量名 As New String(字符, 重复次数)
例如:
Dim s As New String("*", 5)
变量s的值将等于"*****",也就是由5个符号*组成。
也可以在定义变量后,用New String语句给变量赋值,例如:
Dim s As String
s = New String("*", 5)
实际上上面的语句完全等效于:
Dim s As String
s = "*****"
或:
Dim s As String = "*****"
不过假定你要将变量设置为100个空格或100个符号*,此时用New String赋值显然要简洁得多。
如果字符串中本身包括双引号,那么用每两个双引号表示一个双引号。
将下面的代码复制到命令窗口执行:
Dim s1 As String = "利马是有名的""无雨之都"""
Output.Show(s1)
你会发现s1的值为:利马是有名的"无雨之都"
日期常量
日期型常量必须包括在符号#之间,格式为:#月/日/年#
例如:
Dim d1 As Date = #12/31/2008#
等效于:
Dim d1 As Date
d1 = #12/31/2008#
表示定义一个日期变量d1,初始值为2008年12月31日。
下面是另一种定义日期变量的语法:
Dim 变量名 As New Date(年,月,日)
例如:
Dim StartDate As New Date(2008,12,31)
同样表示定义一个日期变量StartDate,初始值为2008年12月31日。
New Date表示创建一个新的日期,既然是创建一个日期,当然得指定年、月、日。
New Date是可以单独使用的,例如:
Dim StartDate As Date
StartDate = New Date(2008,12,31) '变量值设为2008年12月31日
Output.Show(StartDate)
这一行代码:
StartDate = New Date(2008,12,31)等效于:StartDate = #12/31/2008#
逻辑常量
逻辑常量值就两个,分别为True(是)和False(否)。
逻辑变量通常用于保存某一个条件表达式的值。
例如:Dim v1 As Boolean = (1 = 2)
Dim v2 As Boolean = (1 < 2)
Dim v3 As Boolean = True
Dim v4 As Boolean
上述代码执行后,变量v1的值等于False,变量v2的值等于True,因为1=2是不成立的,而1<2是成立的。逻辑变量的默认初始值为False,所以变量v4的值等于False,而变量v3的值显然等于True。
枚举
枚举就是一组有名称的整数,例如星期一、星期二、星期三....,就可以看作是枚举,因为他们实际上代表着一个整数,这个整数表示这一天是该星期的第几天。程序中的枚举,通常用于选项设置,选项通常是一些整数,0、1、2表示不同的设置,为了提高程序的可读性,我们用一些更具描述性的字符型名称来代替这些整数,这些代表着不同整数的名称,就是枚举。例如在列属性设置中,有一个名为“中文输入”的属性,它就是一个枚举类型,包括三个值,分别是:
Default:保持当前输入法状态不变
True: 自动打开中文输入法
False: 自动关闭中文输入法
显然,对于用户来说,用Default、True、False表示不同的设置,比用0、1、2表示不同的设置,要容易理解得多。关于枚举,你现在只需要了解这么多,今后我们会接触到更具体的枚举类型,那时你会觉得枚举其实是很容易理解的。
数组
数组是同一数据类型的一组变量的集合。定义数组语法为:
Dim 数组名(索引上限) As 数据类型
例如:
Dim Names(3) As String表示定义了一个字符型(String)数组,数组名为“Names”,数组的索引从0开始,所以该数组包括4个字符型变量(我们称之为数组元素),分别是:
Names(0), Names(1), Names(2), Names(3)
数组有一个Length属性,用于返回数组的长度。
下面是一段完整的代码,用于测试数组的基本特性,请复制到命令窗口执行:
Dim Names(3) As String
Names (0) = "杨国辉"
Names (1) = "柯迎"
Names (2) = "陈绍月"
Names (3) = "朱志欣"
Output.Show(Names(1)) '在命令窗口显示第二个数组元素的值。
Output.Show(Names.Length) '在命令窗口显示数组的长度。
可以在定义数组的时候,直接给数组元素赋值,例如:
Dim Values() As Integer = {1,3,5}
上面的代码定义了一个整数型数组,数组包括三个元素,分别是1、3、5。
再例如:
Dim s1() As String = {"中国","美国","日本","俄罗斯"}
上面的代码定义了一个字符型数组,数组包括四个元素。
如果采用直接赋值的方式定义数组,不需要指定数组的索引上限,此时索引上限由值的个数确定。
可以在定义数组之后,再给数组批量赋值:
Dim s1() As String
s1 = New String() {"中国","美国","日本","俄罗斯"}
集合
集合类似于数组,但是比数组更为灵活,定义集合的语法是:
Dim 集合名称 As New List(Of 数据类型)
例如:
Dim Names As New List(Of String)
表示定义了一个字符型(String)集合,集合的名称为Names。
集合的成员包括:
名称
类型
说明
Add
方法
向集合中增加一个值
Insert
方法
向集合的指定位置插入一个值
Remove
方法
删除指定的值
RemoveAt
方法
删除指定位置的值
Contains
方法
判断集合中是否包括某个值
AddRange
方法
批量增加多个值
Count
属性
返回集合中值的个数
一旦定义了集合,我们就可以用Add方法向其中添加值,例如:
Names.Add("电视机")
Names.Add("电冰箱")
Names.Add("洗衣机")
可以用Remove方法删除指定的值,例如:
Names.Remove("电视机")
可以用RemoveAt删除指定位置的值,例如:
Names.RemoveAt(0)
表示删除第一个值。
还可以用Insert方法将值插入到指定位置,例如:
Names.Insert(0,"电视机")
可以用Contains方法判断集合中是否包括某一个对象,例如:
If Names.Contains("电视机")= False Then
Names.Add("电视机")
End If和数组一样,我们通过索引来引用集合中指定位置的值,例如:
Names(0)
Names(1)
当然也可以改变指定位置的值,例如:
Names(0) = "微波炉"
可以用集合的Count属性返回集合中值的个数:Names.Count
下面是一段完整的代码,用于测试集合的基本特性,请复制到命令窗口执行:
Dim Names As New List(Of String)
Names.Add( "电视机")
Names.Add("电冰箱")
Names.Add("洗衣机")
Names.Remove("电视机")
If Names.Contains("电视机")= False Then
Names.Add("电视机")
End If
Names.Insert(0,"传真机")
Names(2) = "微波炉"
Output.Show(Names.Count) '显示集合的长度
OutPut.Show(Names(0)) '显示第一个值
用AddRange方法,可以将一个数组或另一个集合中的所有元素加入到集合中,例如:
Dim v1() As String = {"中国","美国","日本","俄罗斯"}
Dim s1 As New List(of String)
Dim s2 As New List(of String)
s1.AddRange(v1) '将数组中的元素全部加入到集合中
s2.AddRange(s1) '将集合s1中的元素全部加入到集合s2中
字典
Dictionary表示键与值的集合,俗称字典。定义一个字典的语法是:
Dim 变量名 As New Dictionary(Of 键类型, 值类型)
例如:
Dim zd As New Dictionary(Of Integer, String)
表示定义了一个字典zd,键的类型是整数型(Integer),值的类型是字符型(String)。
键和值可以是任何类型,例如:
Dim zd As New Dictionary(Of String, Date)
字典的成员包括:
名称
类型
说明
Add
方法
将指定的键和值添加到字典中
Remove
方法
移除指定的键和值
Clear
方法
清除所有的键和值
ContainsKey
方法
判断是否包含指定的键
ContainsValue
方法
判断是否包括指定的值
Count
属性
返回字典中键/值对的数目
Keys
属性
返回键的集合
Values
属性
返回值的集合
示例
Dim zd As New Dictionary(Of Integer, String)
zd.Add(1,"苹果")
zd.Add(2,"香蕉")
zd.Add(3,"波罗")
zd.Add(4,"桔子")
zd.Add(5,"桃子")
zd.Remove(1) '移除键1及其对应的值
zd.Remove(5) '移除键5及其对应的值
Output.Show(zd(2)) '显示键2对应的值
Output.Show(zd(3)) '显示键3对应的值
If zd.ContainsKey(1) = False Then '是否存在键1
zd.Add(1,"苹果")
End If
If zd.ContainsValue("桃子") = False Then '是否存在值"桃子"
zd.Add(5,"桃子")
End If
For Each k As Integer In zd.Keys '显示所有键及其对应的值
Output.Show(K & ":" & zd(k))
Next
For Each v As String In zd.Values '显示所有值
Output.Show(v)
Next
zd.Clear '清除所有的键和值
算术运算符
运算符
说明
+
加
-
减
*
乘
/
除,例如:12/8,等于1.5
\
整除,只返回结果的整数部分,例如:12\8,等于1
^
指数运算,例如:2^3,表示2的3次方,等于8
Mod
取模,例如:10 Mod 3,表示10除以3的余数,等于1
请将下面的代码复制到命令窗口执行:
Output.Show(12/8) '测试除法
Output.Show(12\8) '测试整除
Output.Show(12 Mod 8) '获得余数
Output.Show(2^4) '指数运算
关系运算符
运算符
说明
=
等于
<>
不等于
>
大于
<
小于
>=
大于等于
<=
小于等于
逻辑运算符用于连接两个条件表达式,根据左右表达式的计算结果,返回一个新的逻辑值。
运算符
说明
And
逻辑与,如果左右表达式的值都为True,则返回True,否则返回False
AndAlso
逻辑与,如果左右表达式的值都为True,则返回True,否则返回False
Or
逻辑或,如果左右表达式的值至少有一个True,则返回True,否则返回False
OrElse
逻辑或,如果左右表达式的值至少有一个True,则返回True,否则返回False
Not
逻辑非,如果后边的表达式为True,则返回False,否则返回True,也就是对后边表达式的值取反。
补充说明:
And和Or,都是先计算左右两个表达式的值,然后再返回结果。
AndAlso先计算左边表达式的值,如果计算结果为False,则直接返回False,不再计算右边表达式的值。
OrElse先计算左边表达式的值,如果计算结果为True,则直接返回True,不再计算右边表达式的值。
所以通常用AndAlso和OrElse代替And和Or,因为效率高点。
示例
Dim v1 As Boolean = True 'True
Dim v2 as Boolean 'False
Dim v3 As Boolean = (1 < 2 AndAlso 2 > 3) 'False
Dim v4 As Boolean = (1 < 2 OrElse 2 > 3) 'True
Dim v5 As Boolean = (v1 AndAlso v4) 'True
Dim v6 As Boolean = (v2 OrElse v3) 'False
字符串连接符
运算符&来连接字符串,例如:
Dim s As String
s = "abc" & "123" 's的值将是"abc123"
&可以用来连接任何数据,例如日期型、数值型,在连接之前会自动将非字符型的数据转换为字符型。
例如在命令窗口输入并执行下面的代码,即可显示当天的日期:
Output.Show( "今天是:" & Date.Today)
需要注意的是,&运算符前后必须有空格,将下面的代码复制到命令窗口执行:
Dim s1 As String = "abc"
Dim s2 As String = "def"
Output.Show(s1&s2) '因为没有空格,执行时会出现错误.
上述代码在执行时,会出现错误提示,要正确执行,必须改为:
Dim s1 As String = "abc"
Dim s2 As String = "def"
Output.Show(s1 & s2) '&运算符前后有了空格,可以正常执行了
Like运算符
Like使用通配符来比较字符串。
可用的通配符有:
字符
说明
?
任何单个字符
*
零或多个字符
#
任何单个数字(0 到 9)
[字符列表]
字符列表中的任何单个字符,例如[abx]表示a、b、x三个字符中的任何一个。
[!字符列表]
不在字符列表中的任何单个字符,例如[!abx]表示除a、b、x之外的任何一个字符。
方括号中的字符列表,可以使用连字符 (–) 将范围的上下限分开,例如[a-e]表示字母a到e中的任意一个,[a-z]就表示任意一个字母,而[0-9]表示任意一数字。将下面的代码复制到命令窗口执行,请留意注释和执行结果:
'任意3个字符,后接3个数字
Output.Show( "ABC123" Like "???###") '匹配
Output.Show( "A1212A" Like "???###") '不匹配
'任意一个字符,随后是ABC三字符中的任意一个
Output.Show( "RB" Like "?[ABC]") '匹配
Output.Show( "RD" Like "?[ABC]") '不匹配
'任意一个字符,随后是除ABC三字符之外的任意一个字符
Output.Show( "RB" Like "?[!ABC]") '不匹配
Output.Show( "RD" Like "?[!ABC]") '匹配
'任意一个字母,随后是两个数字
Output.Show( "a12" Like "[a-z]##") '匹配
Output.Show( "112" Like "[a-z]##") '不匹配
If 语句
If语句有三种形式
单分支形式:
If 条件表达式 Then
代码
End If
如果条件表达式的计算结果为True,也就是条件成立的话,则执行代码。
例如在命令窗口输入下面的代码:
Dim Mark As Integer = 61
If Mark >= 60 Then
Output.Show( "及格")
End If
执行之后,上述的代码会得到结果"及格",如果将变量Mark的值改为59,则不会返回任何内容。
双分支形式:
If 条件 Then
代码1
Else
代码2
End If
条件成立,则执行代码1,不成立,则执行代码2。
例如,在命令窗口输入下面的代码:
Dim Mark As Integer = 61
If Mark >= 60 Then
Output.Show( "及格")
Else
Output.Show( "不及格")
End If
执行之后,上述的代码会得到结果"及格",如果将变量Mark的值改为59,则会得到结果"不及格"。
多分支形式:
If 条件1 Then
代码1
ElseIf 条件2 Then
代码2
ElseIf 条件3 Then
代码3
.....
Else
代码X
End If
条件1成立,执行代码1,条件2成立,执行代码2,其余类推,所有条件均不成立,则执行代码X。例如在命令窗口输入:
Dim Mark As Integer = 90
If Mark >= 90 Then
OutPut.Show("优秀")
ElseIf Mark >= 80 Then
OutPut.Show("良好")
ElseIf Mark >= 60 Then
OutPut.Show("及格")
Else
OutPut.Show("不及格")
End If
在命令窗口改变变量Mark的值,执行看看会得到什么结果。
条件拦截:
在多分支形式下,即使多个条件成立,if语句只会执行第一个满足条件的分支。
例如在命令窗口执行下面的代码:
Dim Mark As Integer = 90
If Mark >= 60 Then
OutPut.Show("及格")
ElseIf Mark >= 80 Then
OutPut.Show("良好")
ElseIf Mark >= 90 Then
OutPut.Show("优秀")
Else
OutPut.Show("不及格")
End If
虽然变量Mark等于90,但是输出的结果是“及格”,而不是“优秀”,因为Mark等于90的时候,第一个条件(Mark >=60)成立,所以输出“及格”,其余分支不再执行,直接跳转到End If。
Select Case语句
Select Case语句也是条件判断语句,通用性不如If语句,只能根据一个值的清单来测试一个变量,但是Select Case语句比If语句要简洁一些。
Select Case语句的语法为:
Select Case 变量
Case 值1
代码1
Case 值2
代码2
Case 值3
代码3
Case Else
代码X
End Select
如果变量的值等于值1,则执行代码1,如果等于值2,则执行代码2,依次类推,如果不等于已经列出的任何值,则执行代码X
例如,在命令窗口输入:
Dim Value As Integer = 5
Dim Result As String
Select Case Value
Case 1
Result = "低于20分"
Case 2
Result = "低于60分"
Case 3
Result = "低于80分"
Case 4
Result = "低于90分"
Case 5
Result = "超过90分"
Case Else
Result = "无效值"
End Select
Output.Show(Result)
将变量Value的值分别设为1、2、3、4
展开阅读全文