1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

帖子
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5039|回复: 4

转贴:VB程序员向Delphi的转型

[复制链接]

TA的精华主题

TA的得分主题

发表于 2002-3-21 17:35 | 显示全部楼层 |阅读模式
VB程序员向Delphi的转型 Delphi是Inprise公司开发的一种优秀的可视程序设计工具,历经5个版本的完善后,Delphi 更是尽显其在软件开发中不可比拟的优势。作为一名决心由VB程序员即将转型为使用Delphi进行软件设计的您一定很想对转型中的技术差异等问题进行了解,为使您更快更好的由VB过渡到Delphi中来,我们特写此文,以助您一臂之力。 一、开发环境 在VB中,程序员经常使用的是VB的菜单条、控件板、Form设计器、Debug窗口、控制属性板、代码编辑器以及工程控制器等等,而Delphi中使用频率最高的是Delphi的菜单、Form设计器、代码编辑器、控件板和控件属性板。Delphi中没有Debug窗口,也就是说Delphi将不能像VB那样进行“单句调试”。因为Delphi中的控件较 VB的数量多,所以在Delphi的控件板中有用于左、右翻页的按钮,更与VB不同的是,Delphi把众多的控件按类型分了许多页,在控件板上用户可以看到这些标有控件类型的换页按钮。在调试程序时Delphi使用的是“真编译”方法,所以,在调试时Delphi就会生成扩展名为.exe的文件,这一点与采用“伪编译”方式的VB是不同的。Delphi还提供了许多种应用程序的设计向导,可以方便的为程序员创建出各种复杂程序的雏型。还有需要嘱咐VB程序员的是,Delphi的调试运行快捷键是F9,不同于VB的F5。 二、Delphi的语法 Delphi是以Object Pascal为其内部专用语言的,这一语言与Basic有较大的不同。 (一) 注释:Object Pascal把用“{”和“}”或“(*”和“*)”括起来的一段文字或以“//”开始的一行文字认为是注释句。如: Label1.Caption:=“欢迎” //将Label的标频值改为欢迎。 (二) 变量 1、 变量名:值得说明的是,虽然Delphi的变量名长度可以是任意的,但是只有前63个是有效的。 2、 常用数据类型。Object Pascal中经常使用的数据类型有 (1)、整型 类型 值域 有符号否 字长(位) Integer -2147483648…2147483647 有 32 Cardinal 0…2147483647 无 32 ShortInt -128…127 有 8 SmallInt -32768…32767 有 16 LongInt -2147483648…2147483647 有 32 Byte 0…255 无 8 Word 0…65535 无 16 注:除Integer和Cardinal类型外,其余5种类型的字长和值域将取决于用户的CPU和操作系统。 (2)、布尔型 类型 值域 有符号否 字长(字节) Boolean 0或1 无 1 ByteBool 8位整数 有 1 WordBool 16位整数 有 2 LongBool 32位整数 有 4 (3)、字符型 需要说明的是,常用的String类型,即字符串类型,理论上其长度是没有限制的,实际中由用户的计算机内存容量来决定。 (4)、实型 类型 直线 有效位 字长 Real 2.9*10-39~1.7*10+38 11~12 6 Signal 1.5*10-45~3.4*10+38 7~8 4 Double 5.0*10-324~1.7*10+308 15~16 8 Extended 3.4*10-4932~1.1*10+4932 19~20 10 Comp -2的63次方+1~2的63次方-1 19~20 8 Currency -922337203685477.5808~ 19~20 8 922337203685477.5807 (5)、枚举型 (9)、记录型 (13)、指针型 (6)、子界型 (10)、文件型 (14)、过程类型 (7)、数组型 (11)、类类型 (15)、可变类型 (8)、集合型 (12)、类引用类型 VB程序员在Delphi中使用数据类型时需要注意的是,由于Object Pascal语言是一种数据类型敏感型语言,所以,(1)变量在使用前必须声明数据类型;(2)不同数据类型的变量互不相容,即不能相互赋值。但是Object Pascal为方便用户编程,提供了变量类型强制转换符“AS”,以及大量的数据类型转换函数,如果数据类型不确定的话,用户还可以使用将变量声明为Variant类型,即可变类型,以应付在程序中出现的不可确定的数据类型。 (三)、Object Pascal常用语句简介 名称 用途 说明 Label 标号声明语句 用字母或0~9999之间的整数标识某个执行语句,以方便用Goto语句跳转 Const 常量声明语句 Const 常量标识符=常数 Type 类型声明语句 Type 类型标识符=类型描述 Var 变量声明语句 Var 变量标识符:类型 Procedure 过程声明语句 Procedure 过程标识符(形参) Function 函数声明语句 Function 函数标识符(形参):返回类型 变量:=表达式 赋值语句 与关系运算符“=”不同 Goto 无条件转移语句 Goto 标号 复合语句 由若干语句序列组成,须用Begin……End保留字括起 If…Then…Else 条件语句 Case 条件语句 For 循环语句 For控制变量:=初值To (DownTo) 终值Do语句 While 循环语句 While 布尔表达式 Do语句 Repeat 循环语句 Repeat循环体Until 布尔表达式 Break 终止循环 Continue 不等整个循环体执行完就重新判断是否满足循环条件 几点说明 (1)、声明语句在程序中必须按一定顺序出现,即必须按照标号、常量、类型、变量、 过程、函数的顺序出现。 (2)、Object Pascal以分号“;”作为语句结束符。 (3)、在For语句中,当控制变量等于终值时,循环体仍要招待一次,这与C语言不同。 (4)、Object Pascal不区分字母的大小写。 (四)、嵌入式汇编的使用。在Object Pascal中允许使用嵌入式汇编语句。例如: Procedure TestAsm; Begin Asm Or bx,bx W2@@TestAsmLabel Mov dx,bx Mov cx,bx Pop ecx @@TestAsmLabel inc bx End; End; 三、在Delphi中使用数据库。 (一) BDE 虽然VB声称支持多种类型数据库,但实际上除Access外,VB对其他类型的数据库支持都不尽人意。在Delphi中,Inprise提供给了程序员一个数据引擎——Borland Database Engine,即BDE,BDE的基于驱动程序的体系和面向对象的特性为访问各种数据库提供了一致的接口,而且使用BDE还可以方便的使您开发出客户机/服务器或浏览器/服务器型的大型分布鞋式多层数据库。BDE支持如dBase、Paradox、Text、InterBase、SyBase、Oracl、Ms SQL Server以及任何符合ODBC的数据库,且允许使用ISAM、SQL和QBE对数据进行查询,更令人惊喜的是BDE允许各种数据库间的相互关联、查询、修改等等,且32位的BDE支持多线程、优先级多任务处理,同时,BDE还允许同时运行并访问同一个数据源文件。 由于Delphi本身是个面向对象编程语言,所以程序员在一般情况下完全没有必要了解BDE的应用程序接口,而只需在设计期使用数据库的相关控件即可体会到BDE的强大功能。 Inprise还为Delphi用户提供了诸如Database Desktop、SQL Explorer等多种可视化的数据库设计工具,这就更加方便了程序员对各种类型数据库的驾驭。 注:交付使用了BDE的应用程序时,须一并交付给用户相应的BDE驱动引擎。 (二) ADO ADO即Active Data Objects,是微软提供的一项新技术,进行过ASP开发的程序员一定对它不会陌生,Delphi的5.0版本增加了对ADO的支持,使得用户能够迅速实现对终端用户用做商业决策的数据一致性访问;结合Delphi本身的开放式数据组件结构,可以很快的建立应用程序,用来把自己的商业数据通过Internet发送给客户、最终用户以及整个销售环节。 注:Delphi的“数据控制页”中的控件通用于BDE和ADO。 四、Delphi对WinAPI的调用 在VB中调用任何一个DLL API之前,必须先在VB应用程序模块中使用Declare语句声明,由于API是存在于VB应用程序之外的DLL文件中,所以在VB中必须要指定DLL文件的位置以及相应的调用函数,并且只有声明了API之后,才能在VB中把API当做函数来使用。 而Inprise公司则将以前在C语言中引用的Window.h文件改写为Object Pascal的Window.pas文件,使用API函灵敏的定义符合Object Pascal语法。在Delphi中调用WinAPI只需将相应的API函数单元文件名加入程序体的Uses单元中即可调用相应的WinAPI函数。 五、Delphi中应用程序的调试 相信曾经作为VB程序员的您一定有丰富的程序调试经验,我在这里只介绍一些Delphi调试程序的注意事项。 (一) 调试程序前一定要存盘,以免因程序设计错误而造成不可挽回的损失。 (二) 如果在调试程序时出现错误,且通过自己程序中的“退出”等命令不能正常返回,此时您可以尝试“Run”菜单中的“Program Reset”命令。 (三) 由于Delphi采用了“真编译”的方式,所以用户在调试ISAPI时,如果遇到程序错误,那么修改后的ISAPI程序将不能再次支持,这种情况在Win9x+PWS等服务器模式中是经常遇到的。此时,您可以采用如下两种方法: 1、 在“File”菜单中选择“Save Project As…”命令将ISAPI程序换名存盘,这样修改后的ISAPI程序就不会与内存中错误的ISAPI程序重名,就可以再次运行调试。 2、 使用IntraBob。IntraBob能够在调试完毕之后立刻释放ISAPI程序,使程序员可以不重新启动计算机就可以多次反复调试同一个ISAPI程序。(下载地址:http://www.drbob42.com)。 六、Delphi应用程序的分发 由于Visual Basic自带安装盘制作程序,所以制作安装盘比较方便。制作Delphi应用程序的安装盘,通常要用到InstallShield Express For Delphi,如果您的Delphi程序中使用了BDE,那么您必须使用对应于相应Delphi版本的InstallShield Express来制作带有BDE引擎的安装盘,而且,如果您的应用程序中只用了Paradox表,那么您就没有必要附带SyBase的BDE引擎。更详细的Delphi授权说明,请您浏览随Delphi一并安装到您硬盘中的Deploy.txt文件。 七、在Delphi中使用多线程技术 线程概念是为了解决多任务和多进程的内存分配以及协调并行工作而提出的。多线程是某一个任务同时处理几个工作,比如,同时对几个数据库进行更新等等。Delphi5提供了一个多线程类——TThread,可以允许用户编写多线程处理程序。 Tthread是一个能够在应用程序中创建互不相干的执行线程的类。每一个TThread对象的子类过程就是一个新的执行线程。从TThread类派生出的多个过程就可以是Delphi的应用程序完成多个线程的工作。要在应用程序中使用线程,必须从TThread中派生出一个新类,然后重载其相关的方法。 当一个应用程序运行时,程序就会将线程装载到内存中并予执行,由此,程序运行就变成了包含一个或几个甚至更多线程的过程,这些线程包含了运行这个程序的数据、代码和其他系统资源。一个线程执行程序的一部分,通过操作系统分配CPU的时间。这个过程中的所有线程共享一个地址空间,并使用全局变量处理这个过程。 使用线程可以改进程序的一些性能,如: 1、 为多个通信设置管理数据的输入。 2、 区分多个任务的优先权。 在Delphi中使用多线程应注意如下问题: 1、 跟踪多线程比较耗时,建议在一个单CPU计算机中,每一个进程不能超过16个线程。 2、 在多个线程更新同一个资源时,要保持线程的同步以免造成冲突。 3、 处理一个VCL线程和更新一个窗体的方法必须在主VCL线程内请求。 创建和使用Delphi中多线程的步骤如下: 1、 从“File”菜单中的“New”命令中选择“Thread”,确定选择后Delphi将自动创建一个新单元。这个新单元中将包含用户自定义的一个TThread派生类。 2、 定义多线程对象的Create方法。 3、 插入多线程对象的执行代码,以定义多线程对象的Execute方法。 4、 传递请求使用VCL组件的Synchronize方法,该方法能够引发主VCL线程招待这个请求,从而避免多线程的冲突。 注:在VCL中对象的方法和属性只有使用Synchronize调用后才能启动线程同步执行。 附:多线程演示实例源代码。(演示通过多线程技术,同时在5个TListBox中写入1~100,写入时对5个TListBox设置了优先级,仅供大家参考。http://home.chinese.com/~houshuai/MultiThreadDemo.zip) 八、小结 因为Delphi与VB相比,在开发环境、语言代码等许多方面都有较大差异,所以VB程序员在向Delphi转型的过程中可以会遇到一些困难。但是,幸运的是,VB程序员懂得何谓“面向对象编程”,所以,只要VB程序员下定决心转型到Delphi中来,并经常利用Delphi写一些练手的小程序,那么VB程序员很快就可以很好的运用Delphi写出高水的程序了。

TA的精华主题

TA的得分主题

发表于 2002-4-25 11:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
说了很对!

TA的精华主题

TA的得分主题

发表于 2002-9-25 10:44 | 显示全部楼层
如果VB程序员真得要转型,转到DELPHI没多大意义,不如转到C#或JAVA!

TA的精华主题

TA的得分主题

发表于 2002-9-27 13:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
VB老了吗??

TA的精华主题

TA的得分主题

发表于 2002-10-8 09:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
VB我一直比较喜欢,但是中国的观念是:VB只是个玩具,悲哀啊! 其实一种语言谁好谁坏,谁又能说的清呢? 你不会用VB写驱动程序吧?我想你也不会用VC写数据库程序,不是吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-2-20 06:02 , Processed in 0.022370 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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