精华区 [关闭][返回]

当前位置:月光软件>>讨论区精华>>〖软件开发〗>>● ASP>>★ASP的延伸★>>ASP.NET>>从VB6/VBScript到VB7

主题:从VB6/VBScript到VB7
发信人: ambushaa(十面埋伏)
整理人: dongbao(2001-05-26 23:42:02), 站内信件
  以往的ASP以VBS为程序语言,而在VB系列程序语言中,VBS是VBA的子集合,而VBA又是VB的子集合,因此VBS是功能最精简的程序语言,其限制较多,例如:无法声明变量数据类型,无法开发对象及对象类别等,因此较不利于大型程序或网页的开发。现在ASP+采用功能涵盖面较广的VB为程序语言。
  不过笔者必须说明的是,微软并不是直接采用VB6作为ASP+的程序语言,而是做了一些必要的改良,改良后的程序语言称为VB7(或VB.NET),而从VB6到VB7,主要的改良方向有以下几点:
1、提供对象继承的能力:VB6虽然已经具备建立对象的功能,但没有继承的功能可以强化既有的对象。
2、与其它程序语言共享程序码:VB7所开发的子程序、函数、对象等,可以编译成MSIL,可以直接让其它程序语言使用,而VB7也可以使用其它程序语言所开发的子程序、函数、对象等。
  为了达到以上目标,VB7做了相当大幅度的改变,而不可否认的是,有些VB6/VBS的程序须适度修改,才符合VB7的规定,所以本段落笔者要说明的是VB6/VBS与VB7的差别。

变量的声明与使用

  在变量的使用方面,不像VBS那样一律要将变量视为不定型变量,ASP+所采用的VB7可以使用DIM语句声明变量类型,例如:

'以下语句在ASP中是非法的,在ASP+中是合法的。
Dim X As Integer  '将X声明为整型变量
Dim Y As String  '将Y声明为字符串变量
Dim Z       '将Z声明为不定型变量

  采上用DIM来声明变量的方法,与VB6完全相同,不过相对于VB6,VB7还增加了设定初值的功能,如:

Dim X As Integer = 123
Dim Y As String ="Hallo World!!!"

  VB6没有设定初值的功能,所以上述语句在VB6中是非法的。在VB7中,当一个DIM声明多个变量时,,如果多个变量只对应到一个“As 数据类型”子句时,则每个变量的数据类型均视为相同,如:

Dim A,B As Integer

  对于VB7,上述语句等于:

Dim A As Integer
Dim B As Integer

  而对于VB6,则等于:

Dim A
Dim B As Integer

  在VB6环境下,Integer类型占用2 bytes,Long类型占用4 bytes,但VB7却做了以下改变:

--------------------------------
状态 类型   占用的字节数 说明
--------------------------------
不变 Byte   1 bytes
新增 Short   2 bytes    大小相当于VB6的Integer
改变 Integer  4 bytes    大小相当于VB6的Long
改变 Long   8 bytes
不变 Single  4 bytes
不变 Double  8 bytes
新增 Decimal  12 bytes
--------------------------------

子程序(函数)的定义与调用

  在VB7里,调用子程序或函数或对象的方法时,一定要将所传递的参数放在()里面,如:

Response.Write X   ’在VB7中,这样的写法是非法的
Response.Write(X)

  除此以外,子程序(函数)的定义也要注意,VB6会将没有加上ByVal/ByRef的参数设成传址调用(ByRef),VB7则将之设成传值调用(ByVal)。

数组的初值设定及注标范围

  在VBS里,我们会用Array函数来设定数组的初值,VB7则改成以下语法:

Dim Book() As String = {"F8308", "F8315", "F8316", "F8317"}

  作用相当于VB6或VBS中的:

Book=Array("F8308", "F8315", "F8316", "F8317")

  不过在数组注标方面,VB7不象VB6一样可以指定注标的范围,例如以下语句中的Arr数组其注标范围是1到4:

Dim Arr(1 To 4)   '在VB6中正确,而在VB7中错误

  VB7中的数组注标一律从0开始,而且只能指定数组的元素个数,不能指定数组的起始注标和结束注标,例如:

Dim ArrX(4)  '在VB7中代表数组从0到3,在VB6中代表从0到4

函数在规格上的改变

  写ASP+程序时,比较不方便的地方可能是若干经常使用的函数,在VB7中可能已经不支持或规格有所改变。以下是相关列表(在VB7正式上市时可能会有所不同):

1、Date函数不能使用
Response.write Date --> Response.write(DateTime.Today)
2、Time函数不能使用
Time(Now) --> Hour(Now) & ":" & Minute(Now) & ":" & Second(Now)
3、数学函数
Abs | Atn | Exp | Log | Sin | Cos | Tan | Sgn | Sqr -----> VB6
Abs | Atan| Exp | Log | Sin | Cos | Tan | Sign| Sqrt ----> VB7
方法为:
X=Abs(X)  '在VB6中合法
X=Math.Abs(X)  '在VB7中合法
4、String函数不能使用
5、DatePart、DateAdd、DateDiff函数的第一个参数在定义上有所改变,对应如下:
------------------------------
VB6参数   意义      VB7应为
------------------------------
"yyyy"  年       DateInterval.Year
"q"    季       DateInterval.Quarter
"m"    月       DateInterval.Month
"d"    日       DateInterval.Day
"y"    当年的第几天  DateInterval.DayOfYear
"w"    当周的第几天  DateInterval.Weekday
"ww"   周       DateInterval.WeekOfYear
"h"    时       DateInterval.Hour
"n"    分       DateInterval.Minute
"s"    秒       DateInterval.Second
------------------------------
举例:
取年份:
VB6 > DatePart("yyyy", Now)
VB7 > DatePart(DateInterval.Year, Now)

If [条件式1] And/Or [条件式2] Then

  VB7的If增加了short-circuited(捷径线路)的功能,说明如下:

X=10:Y=20
If (X>0) Or (Y<10) Then

  对于以上的If判断式,VB6或VBS首先做式1的运算,再做式2的运算,然后再做式1与式2的运算,从而得出结果;而在VB7中,如果判断式1为true则不再做式2的运算,即得出条件成立,因此加快了运算速度。

其它改变

1、Set保留字不再使用
如:
Set rs=conn.Execute(sqlSen)
改为
rs=conn.Execute(sqlSen)
当然,在ASP+里,已经不再这样执行SQL命令了。

2、Wend保留字以End While取代

While Not rs.EOF
  ...
  rs.MoveNext
Wend
改为
While Not rs.EOF
  ...
  rs.MoveNext
End While

3、新增运算符(+=、-=、/=、*=)
此类运算符源自C语言,例如X=X+10可以写成X+=10,表示将X加10后赋给X。
i=90
i+=10   '90+10变为100
i-=20   '100-10变为90
i*=2    '80*2变为160
i/=4    '160/40变为40


----
>>>>>>>-------------------------->
Give me a reason to stay here...
<--------------------------<<<<<<
  

[关闭][返回]






转载请注明:转载自 月光程序代码网 [ http://www.moon-soft.com ]