2024年4月25日发(作者:)
维普资讯
34・
.
Computer Era No.8 2002
Visual Basic 6.0与Visual Basic.N ET的不兼容处理
万春’。刘丽莉
(1.集美大学网络中心;2.集美大学计算机与通信工程系,福建厦门361021)
摘 要:本文介绍了VB6、0和VB、NET多方面的不兼容,给出了如何将VB6源代码转变为VB.ET平台下可运行程序 N
的几个常用技巧。
关键词:VB,ET;C;不兼容 N
VB,ET是基于,NET框架的VB6的换代产品,NVB.NET继
’myfixed被设置为固定长度的字符串
承了VB的易用性,可以用可视化的方法快速开发Web应用程
序、XNIL Web服务、Windows应用程序以及其它服务器端构
件,是绝大多数程序员首选的程序设计语言。但VB,ET省略了 N
许多VB6使用的语法,这就意味着用VB6的源程序并不能直
2有关窗体加载
在VB6中,如果想加载已经创建与工程中的某个窗体,则
用如下语句:
frmCustomer.Show
接在VB.ET运行。因此,N将VB6工程迁移到VB.ET就必须 N
重写代码。虽然VB,ET提供了一个迁移工具,N但有些特殊隋况
必须要求手工重写代码。下述是代码迁移过程中的一些技巧。
另外一种VB6的情况如下:
dim frmNewCustomet As Form
set frmNewCustomer As New frmCustomer
frmNewCustomer.Show
1固定长度的字符串的声明
固定长度的字符串不是VB.NET的基本类型,但VB.ET N
系统编译器内部支持。因此,对在VB6中声明的此种类型的变
量需要改变声明方式。如:
在VB6声明如下:Dim mynxedchar As String 8
在VB.NET中,后一种情况能够很好地工作,但前一种情况
会出错。原因是VB.NET的Form实际上是WinForms类的派生
类。
3有关类实例的创建
有两种方法声明一个对象。第一种方式如下:
Dim objSomeObject As MyClass
Set objSomeO bjecl=New MyClass
VB ET要改为:NDim myfixedchar As VB6,FixedLength-
String(8)
但这种改变存在一个大问题:如果要转变的是VB6的用户
自定义类型(UDT),在VB.ET只能采用结构类型(StNruc—
ture)。如果VB6的用户自定义类型中包含固定长度的字符串,
由于VB.ET只能包含则这种转换基本类型,N于是UDT就无法
完全转换为Strucmre类型。如下例:
这种方法最常用,第二条语句一执行,则类MyClass的实例
objSomeObject即被创建。这第一种方法在VB,ET仍然可以 N
使用,不过第二条语句的“Set”要去掉。
VB6的第二种方法如下:
Dim objSomeObjecl As New MyClass
VB6有如下用户自定义类型:
Type onerecord
ID As Integer
objSomeObjec1.SomeProperty=”A stdng value”
。给该对象的某个属性赋值
。固定长度的字符串 myfixed As String 30
S协tus As Boolean
End mype
对VB6,在这种情况下,第一条语句并没有创建类实例,只
有当该对象的某个属性第一次被引用时,该类实例才被立即创
建。但在Ⅷ.NET情况就不同了,当第一条语句一执行,该类实
VB.ET中只能转换为:N
Structure onerecord
Public ID As Integer
例即被创建。对这种变化,VB6源代码迁移到VB.ET时好像也 N
没什么影响,因为第二条语句无非表示第一次引用该对象的某
个属性。但如果在VB6的程序中第一条语句之后有其它语句,
而这些语句假设类的实例还未创建的前提下实现某些功能,则
这种迁移肯定会有问题。
Public myflxed As String。非固定长度的字符串
Public Status As Boolean
End Structure
如果在结构类型中必须要求myfix ̄l变量是固定长度的,
那就必须手工重写代码。如下:
Dim myrecord As onerecord
4有关条件判断
注意如下语句:
If a>b And C Then…
mymco ̄.myifxed=SpaceS(201
myRecord.myfixed=”Some description”
这个语句在VB6和VB.ET的执行有微小的差别,在VB6 N
不管“a>b”为真或假,C都要执行。但是VB.ET处理这一问题 N
的方式是:如果“a>b”为假,则C就(-r转弟42页)
myRecord.myfixed.PadRight(201
维普资讯
42. Computer Era No.8 2002
.
●路由器:CISCO2501
3)网站信息员,其职责是负责Web页面的设计更新,将公
●防火墙:CISCO PIX t520
司各对外发布信息及时上网,负责处理Webmaster邮件,机房日
●交换机:CISCO CATALYST 3524
常管理值班等。
●中心交换机:CISCO CATALYST 6509
5门户网站应用状况
●信息服务器:mM Netifnity 5000
公司门户网站的建设主要是为公司的生产经营服务,不是
●代理服务器:mM RS600 44P Model 170
以赢利为目的,不能产生直接经济效益,因此系统的运行费用由
●数据服务器:mM RS600 H80
公司按计划拨给设备维护费和通讯使用费。
4)系统软件
目前公司建设了1000MB光纤主干网,公司30多个二级单
●信息服务器操作系统:Windows 2000 Server
位都可通过公司网站的代理服务器使用互联网,可以收发电子
●代理服务器操作系统:AIX Version 4.3
邮件,电子邮件的命名可利用公司的域名(XXXX uhua.corn.
●管理服务软件:Netscape Proxy Server 3.5
cn),充分地利用公司的域名资源宣传企业。目前注册用户500
●E-mail管理系统:Lotus Domino 5.04 FOR AIX
多个,已满足了公司公务上网的需求。
●数据服务器操作系统:AIX Version 4.3
正在规划和开发中的公司电子商务平台也充分利用公司的
●数据库管理系统:Oracle 8i for AIX
门户网站。在公司的网站发布招标信息、商务信息、对外合作技
4网站运行及维护
术开发和难题征解等,例如公司生产的颗粒石灰氮产品信息在
企业网站建成后,主要任务是站点安全管理、日志管理、信
网站上发布后,引来了日本、台湾、韩国等客户,取得了良好的经
息维护、技术服务、用户管理、信息管理和信息录入。主要在以下
济效益,集团技术中心的科研人员上网检索和查询到大量的新
几个方面做好工作。
产品新技术开发信息,有力地促进了科研开发。
1)网站主管,其职责是负责站点的技术管理、安全管理,负 随着公司信息化建设的发展,利用企业的门户网站建立电
责公司域名的管理,公司网站主管是由计算机中心副主任兼任。
子集市,开展协同商务,可以提高公司的管理水平和企业竞争
2)网站管理员,其职责是系统维护、日志管理、用户管理及
力。 园
技术服务,安排2名技术人员。
客套客套客 客 客套客套客套客 客 客套客套客套客 客 客客客套客套客套 客 客套客套客套客 客客客套客套客 套客套客 客 客套盍客客客 套套
(上接第34页) 不再执行。这里, 代表返回逻辑值的表达
Me.WindowState=vbNormal
式或函数。这种处理方式类似C语言的处理方式(而不是传统
MsgBox”Error ̄”.vbCdtical
的BASIC语言)。事实上,VB.NET的许多语法与传统的BASIC
bRecordLoaded=True
语言差别很大,反而与C语言越来越接近。
在VB6中,以上这些代码等价于如下代码:
在VB6到VB.ENT源代码迁移时,如果C是一个函数,最
Me.WindowState:0
好是将if后的条件分开写。
MsgBox’’Error[”.1 6
bRecordLoaded=一1
5有关数据库控件的绑定
当使用VB.ENT的代码迁移工具转换VB6代码时,该工具
VB.ENT只支持ActiveX Data Objects(ADO),不再支持
并不修改任何常量。但是,在VB.ENT中的常量虽然与VB6中
Data Access Objcets(DAO)和Remote Data Objcets(RDO)。因
的名称相同,而值却不一样了。例如:常量VB6中的True是一1,
此,如果VB6源代码中有DAO和RDO的有关操作,就要先将
而在VB.ENT中却是+1。这样可能与VB6中程序的原义不一
DAO和RDO用ADO替换。
样了。
6已经作废的传统BASIC的一些语句
8不能用DHTML页和Web类
VB是从QuickBAS1C发展而来,因此有大量的传统BASIC
微软提供的迁移工具不能处理DHTML页,在VB.ENT中
语句一直保持到VB6,实际上这些语句已经很少有人使用,VB.
是用Web Form来代替DHTML页。转换DHTML页需要手工
ENT不再支持这些作废的语句,例如: Gosub、On X GoTo…
去处理。由于两者在许多方面差异太大,比较有效的方式是用
(Computed GoTos)、Let(这里指类似:Let i=i+1)、VarPtr、
VB.ENT的Web Form重写,当然可以将原DHTML页的程序
o ̄jPtr、StrPtr DefBool、DefByte Deflnt、DefLng DefCur DefS—
逻辑拷贝到新代码中。
ng、DefDbl、DefDec DefDate、DefStr、DefObj、and DeWar等
如果在VB6中使用了以上这些语句,则必需先删除,然后
9类的继承和相关操作
才能转换到VB.ENT。
VB.ENT支持继承和与此相关的所有操作,例如覆盖、构造
器等等。但VB6中对面向对象支持的并不好,在VB6中我们只
7内置的常量
能用继承仿真技术,这些技术性能不是很好。因此,如果将VB6
在用VB编程时,如果经常使用一些内置的常量,则是一种
的源程序转换到VB.ENT,最好能用VB.ENT重新写有关对象
良好的编程习惯。如下例:
操作的程序,这样可以获得最佳效果。 圈


发布评论