找回密码
 立即注册
搜索
查看: 1361|回复: 10

[转帖][教程]疯子的vb课堂

[复制链接]
发表于 2007-8-20 23:12:52 | 显示全部楼层 |阅读模式
第1课,建立你的第一个VB程序


写在前头:

这是很早以前写的教程了,面向的群体是没有任何编程基础的朋友.所以其中有些语言或许过于啰嗦.
最早是发布在xloading上面.由于种种原因xloading关闭.之后重开,毕竟没有了那个时候的激情...后来被转载....*(google上面能搜到,不知道具体都是谁转了)
这篇教程的确没有写完,转载来的并不完整.在这里...俺会继续写的.
好了,废话不说...第1课..
=========================================================================
建立你的的一个vb程序
首先,你要先安装一个vb6

vb课程第一步,创建第一个vb程序~
创建一个vb程序有3个主要步骤
(1)创建应用程序界面
(2)设置属性
(3)编写代码

我们这里创建一个"欢迎来到红客联盟"
首先,要建立一个visual basic工程.打开vb开发环境
在那个"新建工程"的列表框中双击 【标准 exe】,即建立一个vb工程,并进入其开发环境
工程默认的名称为"工程1"这时,vb已经创建了一个名为"Form1"的窗体 然后我们设置好窗体的标题,选中form1 然后选择caption属性,内容设置为"欢迎来到红客联盟"
我们可以通过右边的属性对话框,对窗体及控件做一些调整.(如果看不到属性对话框,你可以按F4键打开)

下面,我们为窗体添加控件
添加两个commandbutton按钮控件 然后,在添加一个标签控件Label,然后把几个控件调整好位置.
同样,将label1的内容设置为"欢迎来到红客联盟" 然后,将这个控件设置为不可见..(嘿嘿)将visible属性设置为false,当然你也可以将文字居中,将alignment属性设置为2-center ,设置font属性可以调整控件的字体及字体大小.
刚才我们不是添加了两个按钮么?将command1的caption设置为..显示(这个是任意设置的)
然后,将command2的caption设置为 退出...
一切设置完成之后,我们就可以写代码了.
刚才不是将lebel1设置成不可见么(嘿嘿,用按钮让他实现可见吧!)
我们双击"显示"这个按钮,
代码为:
Private Sub Command1_Click()
label1.Visible = True
End Sub
其意思是,单击command1按钮(也就是"显示"按钮),将标签的属性,visible调整为true
然后,我们回到窗体,双击"关闭"按钮
代码为:
Private Sub Command2_Click()
end
End Sub
意思很明显,就是按关闭按钮,就end了
呵呵,简单吧...
然后我们保存就可以了

我们已经将代码保存,如果将它编译成可执行文件呢?
我们选择[文件]菜单中的[生成工程1.exe] 就ok了
现在已经建立了第1个vb应用程序,这是一个功能非常简单,却有很有用的应用程序.如果要想使本程序真正有用,还要添加许多功能...后面将详细介绍vb编程知识,希望大家通过学习建立真正实用的应用程序..

(上文对不会编程的朋友来说,应该是可以看懂的吧,如果有不明白的地方,请提出,我将为大家做详细的讲解...会点vb的别嫌我罗嗦...谁都是从初级开始的!~)

[此帖子已被 晴川 在 2007-8-20 23:13:44 编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-8-20 23:13:22 | 显示全部楼层
第2课, vb的工作机制(都是些理论性的东西)


vb的工作机制
提示重点:
1.对象及对象的属性和方法
2.事件驱动机制

首先我们说一下对象,vb不是完全面向对象的语言,我们无须学习复杂的面向对象的方法.但vb属于"基于对象"的语言.为了更好的理解,我觉得有大家有必要稍微理解一些对象的知识..
日常口语中,常用到"东西"这个词,所谓的"东西"就可以理解为对象.对象可以看作是实际存在的一个事物,比如,一个鼠标,一个显示器.等等
但是,怎么区分对象呢?我们可以将事物分类,当然,我们不会将灯泡和门分为一类,因为它们表示的事两种事物..比如颜色,可以分为多种,蓝,红,黄...
在面向对象理论中,"类"这个词事来表示对象的不同类型,属性和方法表示同种对象的不同特征.
在vb中,窗体,控件,菜单都是对象.
在那个例子程序"欢迎来到红客联盟" 所包含的对象有一个窗体,两个命令按钮和一个标签.其中两个按钮控件他们有不同的capiton属性.一个为"显示"一个为"关闭".这就是同类的不通属性..
在vb中,应用程序的用户界面是由很多与用户界面有关的对象组成.所以,在写vb的时候,要做的第1件事,就是准备号程序中所要的对象,也就是创建程序界面..

理解完对象.下面我来说一下事件驱动机制.
vb的主体是很多的对象.也就是窗体.控件,菜单等.所谓"事件"就是我们在某个对象上进行操作.比如在"显示"按钮上单击,就会在这个命令按钮上激发一个鼠标单击的事件 ,一般来说,所有的操作都是由目的的,程序应该响应我们的操作,也就是程序员应该编写代码处理这些事件.
实际上,vb程序的运行过程就是对事件的处理过程.程序运行时,各种不同的对象会产生不同的事件.有些事件是我们的操作引起的,有些则是程序自己产生的.程序员分别为不通的事件编写处理代码.在没有事件发生之前,程序什么也不做(病毒程序可不是这个样子哦).这就是所说的事件驱动机制.
vb的这种基于对象的事件驱动机制,就是简化windows程序设计的宝贝..按照这种机制,设计一个vb程序需要遵循下面的步骤
1.设计程序界面,也就是放对象
2.定义用户界面中各个对象的属性,比如标题..
3.定义各个可能用到的事件
4.给事件写相应的代码
前3项只需用vb提供的工具就可以搞定,而最后一项,就看你的了..(^_^__)
回复

使用道具 举报

 楼主| 发表于 2007-8-20 23:14:07 | 显示全部楼层
第3课, 讲解vb中的常量

前面我们大家知道了vb的工作原理,
下面,我们说一下常量...

怎么说呢,常量是程序中始终保持不变的一种数据,表示一个固定值.
数,字符串,还有日期,都可以作为常量来处理,举个例子,在比如那个圆周率,π(3.14159265....)算一个普遍的常量吧~.在程序中,可能会多次使用,.这样,我们可以用一个常量p来表示,如果不这样表示,每次使用到这个圆周率的时候,都要输入"3.1415..."这多麻烦呀.
常量的特点:一个常量一经声明,就不能在以后的语句中改版它的数值.就可以保证常量生命中指定的数值在程序的其余部分有效.(这段作为常量的概念)

常量的命名
格式,
const constantname [as type]=value
其中constantname是常量名,这个名字是自己起的,就是上面表示圆周率的p. as type部分规定常量类型,这个是可有可无的,如果没有这部分,则系统会根据所赋给常量的值来确定常量的类型.

常量名必须遵守下列要求
以字母开头
最多有40个字符
字符只限于使用字母,数字,和下划线,不允许使用标点符号和空格
不能使用vb的保留字

常量的声明
除了常量名外,还有一个指定的值.(也就是给常量赋值)这个值可以为数字,字符串,日期.
数字常量只要是数字就可以了,字符串必须用引号(" ")围住表示,日期则必须用井号(#)围住
例如在一个事件过程中,声明了下列的3个常量
const money =1
const myname="zf"
const today=#8/20/2004#
一般来讲,常量的声明都是放在一个事件过程或者函数的开头部分,这样便于提高程序的清晰型和以后查找错误.有时希望不必每一行都使用"const"来声明常量,就可以把所有的常量都在一行中进行声明,在每个常量之间用逗号分隔,例如
const money=1, myname="zf", today#8/20/2004#
当然,如果常量的数目多,采用一行声明所有的常量也不算一种好方法.对于多个常量,可以将类型相同的放在一行中,例如
const money=1, number=2
const myname="zf", yourname="cdplayer"
const today=#8/20/2004#, birthday=#10/2/1987#
常量可以直接赋值,也可以通过其他的常量来赋值.例如
const number=2, money=1
const aver=(money+number) /2
上面声明了,常量money的值为1 ,number的值为2而aver的值(1+2)/2或者1.5
声明常量以后,就可以像使用一个数值一样使用它了,例如
const money=1, number=2
a= money+1
b=number+2
这个语句很简单了
第1句说明了money 和number的值分别为1 和2
第2句分别说明money的值加上1,然后把这个值赋给变量a.
第3句...就不用累赘了吧..

不过要注意的是,变量的声明不能使用函数,例如下面的声明则是错误的
const p=sin(1)
在vb中大量使用了常量来定义和设置各个控件的属性.例如,一个复选框的状态有0(取消) 1(选中) 2(变灰),但是,我还是建议大家使用下列语句
check1.value= vbunchecked
check1.value=vbchecked
check1.value=vbgrayed
而不要使用
check1.value=0
check1.value=1
check1.value=2
使用第一种方法就可以大大提高程序的可读性,可以让别人更容易理解你写的程序
回复

使用道具 举报

 楼主| 发表于 2007-8-20 23:14:23 | 显示全部楼层
第4课, vb中显式变量的声明方法


前面我们认识了常量,下面来说说变量吧~
变量在vb中,也是用来在程序的执行过程中保存数据(这一点和其他语言都是一样的).
例如,在论坛注册系统中,并不是为每一个来注册的朋友都写一个程序,而是用一个ID来代表一个朋友.当输入自己的id后,程序会将该id赋给变量,在以后的程序过程中就使用该变量来处理各种操作.
vb中的变量概念和数学中变量的含义是截然不同的.数学中的变量含有未知的因素.但是vb程序中,变量是指该量在程序执行的整个过程中其值是可以改变的,但在运行的每一个瞬间每一个具体的运算过程中,它的值都是确定的.
在程序运行过程中,对程序中变量按其所分配相应的内存单元来存储数据.在程序执行过程中,变量值的变化说白了就是与此变量相对应的内存单元内容的变化.
一般来说,变量必须声明.就是指明变量的类型.但在vb中,不一定要求我们先声明变量.
如果是先声明变量,叫做"显式声明"
如果我们不先声明变量,而让程序自动判断变量类型,叫做"隐式生明"
这就是声明变量的两种方式.

下面我们说说"显式声明"
我们要使用 dim语句,格式:
dim yourname as typename
dim  as
dim作为声明变量的一个标识, as作为变量名和类型的分隔.
它和常量一样,也变量名也有一定限制
1 必须以字母开头
2 不能包含小数点和其他类型声明字符
3 不能超过255个字符(超过就溢出了,这是程序员最忌讳的!)
4 不允许使用vb的保留字
5 字母不区分大小写
6 在变量范围内唯一

看看下面的这个例子,声明3个变量,分别是整数型,字符型和日期型变量.
dim year as integer
dim name as string
dim z_data as data
第一个变量可以存放1987或2008之类的整数,第二个变量可以存放类似"大兔子"之类的文本,而第三个变量可以存放类似"08/25/2004"之类的日期数据.
所有的变量也可以放在一行来声明
例如上面的我们就可以这样写
dim year as integer, name as string, z_data as data
vb发现了dim语句后,就会根据语句中制定生成一个或多个新的变量,也就是在内存中占用一些空间并为其命名,生成占位符.以后的过程中,程序将使用该内存区来读取后者设置变量的值.例如 year=2004 ,vb就会立即吧数值2004存放在变量year所占用的的内存单元中.我们使用print year,就可以让vb把year的内存单元中的值给读取出来,然后就显示出来了.
声明变量的重要的原因是,让vb知道变量存放的信息类型,并可以验证变量的数据.如果一个变量被赋予和它的类型不相匹配的数据时,vb会给出相应的错误提示信息.如下列代码就会产生一个不匹配的运行错误!
private sub Form_Load()
dim year as integer
dim name as string
z_data = "ok"
End Sub
当然,也可以只声明变量,不指定类型.这时,vb会生成可以放置任何类型的一般变量.这种方法很灵活,但是笔声明为特定类型的变量需要更大的间接成本~!

显示声明也就这么多内容,大家是否都明白了呢?不明白的地方尽管来问啦!
先写这么多,下一课我们就说说隐式声明~~呵呵_
回复

使用道具 举报

 楼主| 发表于 2007-8-20 23:14:42 | 显示全部楼层
第5课, VB中的隐式变量

上次我们说了"显式声明"现在咱们了解一下"隐式声明"

所谓隐式声明,就是在使用变量之前,我们不声明它,运行的时候,让vb自动为其变量名寻找匹配类型.
我们可以通过TypeName()函数来验证变量的类型.
例如

private sub form_load()
a =135
b = "hello everyone"
debug.pring "variable a is " & typename(a)
debug.pring "variable b is " & typename(B)
end sub
在运行后,那个"立即"对话框就会显示出结果的!
此外,我们还可以定义变量类型的范围.
符号 "$" "%" "&" "!" "#"分别代表的变量类型为string, integer, long, single, double
至于格式嘛~就是把符号加在变量名的后面,例如 y_year& 大家可以举一反三!

大家也可以使用下列语句来根据开头字母确定变量的声明范围.
deflng
defdate
defstr
......
其格式为
defstr z
当然,要讲所有以从a到z的字母开头的变量都定义为整型变量,可以这样写
defint a-z
(e问里只有a-z的26个字母,这样声明,无疑等于定义了所有的变量.请大家在使用时,别生搬硬套~)
回复

使用道具 举报

 楼主| 发表于 2007-8-20 23:15:02 | 显示全部楼层
第6课, vb中的常用变量类型,及详细讲解数字型变量树型模式

上次咱们知道了vb的变量声明格式及方法,今儿俺来说说变量的类型

vb中,以下变量类型
1,数字型变量(numeric)
2,字符串型变量(string)
3,日期型变量(date)
4,对象型变量(object)
5,变体型变量(variant)
这几个vb变量类型中,最最主要的就是前面两个,数字型变量和字符串型变量.意思很简单,数字型可以用来存放数字,字符串型存放文本.
下面就来详细介绍这几种变量.
1.数字型
数字型变量有多种类型,在咱们的vb里,有3中数字数据类型
1;整形
2;浮点型
3;货币型
其中,整形数据还可以分为整形(integer)和长整形(long).浮点型还可以分为单精度型(single)和双精度型(double)
数字型变量分这么详细,其实是为了提高程序的运行效率.如果在程序中大量使用双精度型,会直接影响到程序的运行速度,但它的精度提高了.

前面咱们知道了变量的声明方式,这样我们就可以声明不同类型的变量了!
dim z_ge as integer
dim z_D as long
.....
等等等等,都是这样的声明方式

但要注意的是,dim语句可以在一条语句中声明多个变量,但必须注意变量声明的格式!否则将的不到正确结果!
例如
dim z_ge, z_zf as integer
这本意是将两个变量声明为一种格式,但这是错误的!
我们可以用typename()函数,验证上面的变量类型
声明完变量后,我们这样检查
debug.print "z_ge is " & typename(z_ge)
运行后,在那个"立即"窗口中,可以看到结果
z_ge is empty
只有最后的那个变量,被声明为integer,你可以多声明几个,多测试几次就知道了!
正确的声明方法是
dim z_ge as integer, z_zf as integer
不同的数字型,所表示的范围是不同的,

Integer 存放-32,768 到 32,767
Long 存放-2,147,483,648 到 2,147,483,647
Single 存放 负数:-3.402823E38 到 -1.401298E-45;正数:1.401298E-45 到 3.402823E38
Double 存放 负数: -1.79769313486232E308 到 - 4.94065645841247E-324;
正数:4.94065645841247E-324 到 1.79769313486232E308 之间的数
Currency 存放 从 -922,337,203,685,477.5808到 922,337,203,685,477.5807
是不是很high呀!
就运算速度来说integer是最快的!不过也要根据实际情况而决定!

如果变量要包括小数部分,那样可以声明为single ,double, currency这几种类型.single和double主要差别不是它们的数值范围,而在于表示数值的精度.例如,用single来表示1除以3,结果是0.3333333如果我们采用double,则它的结果为 0 .333333333333333 我们在实际运用中,这可以灵活运用!
currency可以存放定点数,它支持小数前面15位和后面4位.
这里需要我们注意的是,不数字类型在机器内部表示不同的格式.所有的数值都要在在一定位数进行结尾.比如我们刚才运行的1除以3 结果是0.3333333……无穷多个3.而在机器中,即使把所有的内存用光,也是要截尾的.
我们看看下面的程序
Private Sub Form_Load()
Dim a As Single
a = 1 / 3
Debug.Print a
End Sub
运行后,在"立即"框中,看到的结果是0. 3333333
如果我们再让它乘上10000000
它的结果就成了3333334
显然,它的结果不是我们期待的那样.也许我们对这些误差不是特别在意,但我们必须牢记:这种误差在以后的计算中是很有可能被逐步放大的!

咱们已经初步理解vb中数字型变量了,下面再说说数字型变量的精度

同样,每一种数据类型都有它自己的精度,整数型数据精度不用我们太多的关注他.精度的概念再浮点数上体现的比较多!浮点数种整数部分越小,那它可以放置小数位数就越多,这是因为存放再数据的内存字节数都是一定的.
例如,我们用双精度double数据类型表示,则2除以3的结果为 0.666666666666667而200000除以3的结果用double类型表示则为66666.6666666667
因为vb只能用8个字节来存放这个数字,较大数字的有些字节要分配给整数部分,小数部分的字节数就越少.
如果我们需要尽可能高的精度的时候,有些控制精度的技巧是需要学习的.
1.调整数字的偏差量.如,我们在计算10000000~10000001之间的数的时候,我们可以先减去10000000让数字缩小到0~1之间,然后到运算结束后,再将结果加上10000000
2.尽量减少不必要的计算.在所做的各种运算里,如果涉及到很复杂的运算攻势,我们有必要对公式进行化简.来避免不必要的运算步骤(这也叫偷懒).例如,在计算c=a*b/a+a的时候,我们完全可以将公式写成c=b+a这样做就减少了不必要的误差.

精度理解之后,下面学习一下byte数据类型
上面我们可以看出,数字型数据存放的最小占用内存是2个字节,并没有哪一种数字型数据是存放在单个字节种的.不过,在一些场合,假如要方位2进制文件的时候,需要对数据各个字节都进行访问,这时,byte类型就派上用场了...
byte数据类型可以表示0~255之间的整数.和其他的数字型数据声明的格式都是一样的.
dim a as byte
byte数据类型也可以用来做数字计算,但计算的数字,和结果必须控制在255这个数字以内.否则将会出现溢出错误(这是程序员最忌讳的)
例如以下代码
dim a as byte
dim b as byte
a=230
b=50
b=b+a
debug.print b
其结果是280,但这时就会出现溢出错误,因为280无发放置在1个字节中.不过,值得注意的是如果我们使用,msgbox a+b却可以显示正常的结果!
呵呵,vb有意思吧..
数字型就讲到这里,下一贴将讲述vb中的字符串变量...呵呵
等我们理解了变量的类型,我们就可以写个小东东了..哈哈~
回复

使用道具 举报

 楼主| 发表于 2007-8-20 23:15:20 | 显示全部楼层
第7课, 讲解vb中,字符串变量,布尔型变量,日期型变量树型模式

上回说道变量类型,咱们也理解了数值型变量.这下可好,我们接下来看看字符串变量~!

字符串数据类型用于存放文本(废话)
声明格式..
dim name as string
还记得声明文本时,需要用" "将所声明的文本圈起来....
一个字符串变量可以存放任何文本,长度最多可达2GB.
注意一下..
z_temp = ""

z_temp= " "
两者之间是不同的前者表示的是该变量为空,后者表示的是两个空格符号~一定要注意哦!
看看这个变量
z_data = "123"
这个z_data也可以像数学变量一样进行数学运算,而在旧版vb中,它就会产生运行错误而崩溃.
例如
dim a as string
dim b as string
a = "25"
b = "100"
则将a乘以或除以b都是有效的运算.我们可以使用下面的语句
debug.print a & * b
运行后,在立即框中,就会看到正确的值 2 500
这就足以说明,vb知道用户希望把两个变量当作数字,就先转换为数字,再进行运算,并将结果串换成正确的数据类型.我们也可以在同一个表达式中,把变量既当作字符,又当作数字
例如,语句 debug.print a & "*" & b & "=" & a * b
这样是可以正常运行的,运行后显示 25*100=2500

但是,这种数学运算是绝对要避免的,这样写不见得都能得到正确的值!
看看这句
debug.print a + b 是能得到正确的结果.相反,它的结果为251000
这是为什么呢?
实际上,vb在处理过程中是把b连接到a的后面,而不是将它们的值相加.
当然,我们也可以定义字符串的的长度.
我们可以这样写
dim a as string * 10
这样,就可以表示 变量a的长度为10个字节,也就是5个汉字的长度,在定义密码框中很常见~!
如果所输入字符小于10 它会自动用空格补齐,如果大于10,则多余的部分则会被截掉,只保留钱10个字符.

这一课的第2个变量类型
布尔型变量
布尔行变量有两个值,True和 False.
它可以使用逻辑运算符来进行组合.逻辑运算符有AND . OR . XOR和NOT.
其中,使用最频繁的是NOT运算符,它用来改变布尔变量的值,假设布尔型变量pe1的值为True.则语句pe1=NOT pe1这个变量的值就改为了False
注意,使用逻辑运算符进行数学运算,不会产生溢出错误(嘿嘿,不错吧~).但他们并不是返回True或者False,而是返回另一个组合两个算子的匹配位,就是把两个算子按照逻辑运算符表达的关系进行操做.
如:I and 3 将返回3 , II and 2 将返回2

本课第仨变量类型
日期型变量
日期型变量的声明方式..
dim z_date as date
(这些声明方式都是大同小异,呵呵!够简单吧~)
日期变量在声明后,可以存放日期或时间的值,或者两个的组合.如..
dim z_date as date
z_date = "01/01/2005"
z_date = "2/14/2005"
z_date = "21:56:10 AM"
z_date = "2/14/2005 22:12:41 AM"
z_date = #2/14/2005 12 :12:13 PM#
这些都是合法的,日期数据类型有一定的灵活性,在vb中,不需要做复杂的转换就可以处理日期和时间的值.
同时,日期数据时间也可以使用+ ,-,*,/.等数学运算,但对于日期而言 *和/是没有意义的!
另外,如果为了获取当前机器时间,我们可以用now()函数.当然,还有year() , Month() 和Days()分别表示..年..月..日.
我们可以这条语句来获得当前机器时间,debug.print now
当一个数字型数据向日期型数据转换的时候,小数点左边的数值将转换为日期数据,右边的将转换为时间信息.以1899年12月31日作为分界点,如果是一个整数,表示的是它以后的日期,如果是一个小时,则表示它以后的日期.而0.5678将被转换成时间信息,转换的时候0表示午夜0.5表示正午.如,从现在起过3小时的日期和时间可以表示为
now+0.125
回复

使用道具 举报

 楼主| 发表于 2007-8-20 23:15:38 | 显示全部楼层
第八课, 对象型变量和变体变量
(近日电缆被盗割,NND)
上次讲了vb的,字符串,布尔,日期型变量.

现在学习一下对象型(Object)变量!
这种变量主要是针对vb中的多种控件对象来使用.在应用程序中,既可以通过默认的控件对象名来操作控件,也可以将一个对象型变量与控件变量挂钩,然后通过该变量来操作控件.
声明格式...和以前的一样,
dim "变量名" as objecttype
声明了object变量后,还需要将其与界面上的控件关联起来才能通过它来操作对象,在此,我们可以使用set语句:
set "变量名" = objectname
这样,就可以通过对象型变量来操作控件了
下面,我来举个例子吧.~
先创建一个vb工程,并在窗体内添加以下控件
textbox checkbox commandbutton
这里我有个然后在窗体的load事件过程中添加如下代码:
Private Sub Form_Load()
Dim z_command As CommandButton
Dim z_text As TextBox
Dim z_check As CheckBox


Set z_command = Command1
Set z_text = Text1
Set z_check = Check1
z_text.Text = "使用对象型变量ing"
z_command.FontBold = False
z_command.Caption = "通过对象型变量修改caption"
z_check.Value = vbGrayed

End Sub

前面3句声明了3个对象型变量,中间的3句将各个变量与对应的控件对象关联起来.其余的语句都是修改控件属*的.
对象型变量不仅仅用于对控件对象的操作,它也可以用于生成自己的对象.
ok,
后头说一下变体变量
变体变量是适用于所有数值类型的变量,它是最灵活的数据类型,vb回自动根据变量的当前值,处理声明为variant的变量和没有声明的变量.咋看咋像隐式声明?呵呵,接着往下面看!) 它的声明格式...如下........
dim variablename as variant
也可以不指定类型
dim variablename
甚至,我们可以不声明变体变量,就可以直接使用了.在这种情况下,vb也会把没有声明的变量当作变体变量来处理. 变体变量的值的类型是可以变化的.
看看这个例子
Private Sub Form_Load()
Dim m_variant1 As Variant
Dim m_variant2 As Variant

m_variant1 = "30"
m_variant2 = "29"

Debug.Print m_variant1 + m_variant2
Debug.Print m_variant1 & m_variant2

End Sub
两个语句虽然显示一样的结果,其中,我们用m_variant1 + m_variant2本意想让两个数相加,....但对于字符串,+和&是一样的,如果希望两个数相加,我们至少要对其中一个赋予数字型变量!
变体变量也可以用来存储日期和时间,直接用##括起来就可以了.

变量类型就算完了,后面再讲变量类型的转换...
回复

使用道具 举报

 楼主| 发表于 2007-8-20 23:15:55 | 显示全部楼层
第9课

该说vb中变量类型的转换了....咳..~~
有的时候,程序中需要将一种变量转换成另一种变量类型.(根据实际情况)
比如在科学计算的时候,原来的single类型不能满足需要,那么,我们就要将其转换成 double
同样,字符串和数字也可以转换的...

大家看看这个表..函数名,及转换作用..

Str (x) 将数值数据x转换成字符串
Val(x) 将字符串x中的数字转换成数值
Chr(x) 返回以x为ASCII码的字符
Asc(x) 给出字符x的ASCII码值,十进制数
Cint(x) 将数值型数据x的小数部分四舍五入取整
Int(x) 取小于等于x的最大整数
Fix(x) 将数值型数据x的小数部分舍去
CBool(x) 将任何有效的数字字符串或数值转换成逻辑型
CByte(x) 将0-255之间的数值转换成字节型
CDate(x) 将有效的日期字符串转换成日期
CCur(x) 将数值数据x转换成货币型
Round(x,N) 在保留N位小数的情况下四舍五入取整
CStr(x) 将x转换成字符串型
CVar(x) 将数值型数据x转换成变体型
CSng(x) 将数值数据x转换成单精度型
CDbl(x) 将数值数据x转换成双精度型

例如,,可以使用cdbl()函数来将变量转换成双精度型.大家看看这段代码:
Private Sub Form_Load()
Dim z_temp As Integer
z_temp = 20
Debug.Print "z_temp is" & TypeName(z_temp) & z_temp
Debug.Print "afterchange, z_temp is " & TypeName(CDbl(z_temp)) & z_temp1
End Sub
在vb中,有时候辉自动转换数据类型,例如:
Private Sub Form_Load()
Dim a1 As Integer
Dim a2 As Integer
a1 = 2
a2 = 6
Debug.Print a1 / a2
End Sub
尽管我们已经声明了变量类型都是整数型,但是,我们运行后看到的值却是.333333333333333 双精度型数据,如果我们已知a1/a2仅仅是货币计算的话....那么,我们采用CCur()函数:
Debug.pring CCur(a1 / a2)
就可以了..
字符串和其他数据类型的转换是最重要的,以后我们会说明的..
除了转换外,我们可以用VarType()和TypeName()函数来检查变量类型.
呵呵,够方便吧....嘿嘿...
(不行...有些困,估计大家看到的可能不明白,不明白好说,在那个问题贴里面回帖提问..嘿嘿..去睡觉了....困挂了..)
回复

使用道具 举报

 楼主| 发表于 2007-8-20 23:16:11 | 显示全部楼层
[VB课堂]第十课, 用户定义的数据类型

内容不多,还是希望大家能够掌握

用户定义的数据类型

以前介绍的变量都是存放在单个数据的.而在实际应用中,变量往往是大量不同数据类型的数据组合.也就是数据库....例如一个最简单的人员档案记录,至少需要有 人员编号,姓名,出生日期,性别 等等..
每一个人的记录都成组出现,不应该出现数据之间的交杂混乱.
用户定义的数据类型就是用于处理上面的问题的..
它可以把许多相同或者不同数据类型的变量放置在一起组成一个结构,这种结构也就是记录(Record)

在vb中定义用户自定义的数据类型,可以使用Type语句
格式如下:..

Type vartype
variable1 As vartype
variable2 As vartype
variable3 As vartype
...
variablen As vartype
End Type
声明记录类型数据后,在应用程序中就可以定义具有这种数据类型的变量了.定义改种数据类型的变量和一般变量的定义是一样的.格式:
Dim VariableName As varType
例如,上面的人员结构可以声明为
Type MenRecord
ID As Integer
Name As String
birthday As Data
gender As Boolean
End Type

现在,就可以使用MenRecord 来声明变量:
dim z_men as menrecord
dim z_object as menrecord
然后就可以通过该变量来访问记录中的各个字段了.访问的规则就是变量名加小数点加字段名. 例如,要访问人员记录中的姓名,就可以使用
z_men.Name
从这个角度上来看,记录相当于对象,而字段相当于属性.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|晴川论坛2004-2026 ( 蜀ICP备12004085号-1|蜀ICP备12004085号-1 )暂时留空

GMT+8, 2026-6-24 18:48 , Processed in 0.124800 second(s), 17 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表