转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
升级到Delphi 6 - 兼容性问题(中文全文)         ★★★★

升级到Delphi 6 - 兼容性问题(中文全文)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1988 更新时间:2009/4/23 18:44:12

 

 

 

升级到Delphi 6

原著:Borland Corporation

翻译:Musicwind®

日期:2001-07-11

 

 


声明:

以下文章的内容取自Delphi 6附带的帮助文件。

版权所有Borland Corporation

翻译此稿事先没有得到Borland的批准,鲁莽之处,恳请Borland多多原谅。

 

 


总则

打开Delphi 5 (或更早版本)的工程,新版本会自动对其进行升级。以下将要介绍的是新版本中可能会对现有的Delphi工程带来潜在影响的一些改动。

IDE(集成开发环境)特性

       包名称的自动更新

       兼容性问题

想要了解更多其他信息,请参考”Delphi6新特性”这一部分的内容。

 

兼容性问题

以下列出的是可能影响你的Delphi应用程序的几个大的方面:

 

一.             由于VCL体系结构的变化而引起的Provider和Client Dataset 的一些事件的变动

TCustomClientDataSet的引入,使得Delphi 5或早期版本中的事件处理机制有些改动。

DBCLIENT.PAS单元中有5种类型的6个事件发生了变化,他们分别是:

 

事件类型                    变化

 


TResolverErrorEvent            影响到provider的 OnUpDateError 事件。

TBeforeUpdateRecordEvent   影响到provider的 BeforeUpdateRecord事件。

TAfterUpdateRecordEvent     影响到provider的 AfterUpdateRecord事件。

TProviderDataEvent             影响到provider的 OnGetData and OnUpdateData事件。

TReconcileErrorEvent           影响到client dataset的 OnReconcileError 事件。

 

必须将以上提到的这些事件对应的处理函数(过程)中的TClientDataSet替换为TCustomClientDataSet。

 

二.             使用默认数据库登录的代码的变动

原先,将一个连接组件(比如 Tdatabase,TADOConnection,或TDCOMConnection)的LoginPrompt属性设置为True,则会有默认的登录对话框弹出。这一特性已经不再保留除非你在单元引用中增加一个引用DBLogDlg的语句。如果想要应用程序仍然能够弹出默认的登录对话框,务必加上 Use DBLogDlg这么一句,否则便不会有任何提示输入用户名和密码的对话框出现。

 

三.             潜在的二进制Form文件的不兼容

过去,新版本Delphi创建的二进制Form文件(或称DFM文件)可以被老版本的Delphi读取。但是现在不行了。某些二进制Form文件可能不能被老版本正确的读取,其原因是Delphi 6内部的字符串的流化和原先不同。过去,流化操作假设一个本地特殊的字符集。而现在新的流化操作假设字符集为UTF-8。由此带来的问题就是,如果Delphi 6的二进制Form文件中包含有码值大于127的字符出现(比如版权符®),则该文件就不能被Delphi 的老版本正确读取。

如果你想在老版本的Delphi 中打开Delphi 6 的Form文件,那么请先将该Form文件存为文本格式而非二进制格式。

 

四.             有关可赋值的常量

编译宏$WRITEABLECONST现在的缺省值为关(OFF),这是为了防止在Delphi的工程中运用可赋值的常量。可赋值的常量,也就是定义一个常量,但是却允许在运行期间改变其值。例子如下:

const

   foo: Integer = 12;

begin

   foo := 14;

end.

在以往的Delphi版本中,有这么一个特性:常量不是真正的常量。使用编译宏$WRITEABLECONST OFF,则以上的代码中Foo的赋值将引发一个编译错误。若要避免这个错误,可将Foo的声明改为 var。

将常量用作一个可以初始化的局部变量,这样的代码如下:

procedure MyProc;

const

   somedata: Integer = 12;

begin

   Inc(somedata, 3);

end;

现在你要做的是将局部常量的声明移到过程的外部,使其成为一个全局的变量。然后代码变为:

var

   somedata: Integer = 12;

procedure MyProc;

begin

   Inc(somedata, 3);

[1] [2]  下一页


[系统软件]BCB6 下devexpress 安装手记  [常用软件]Internet Explorer 6 Public Preview 最新出击!!
[常用软件]painter 6 手绘实例《油彩篇》  [常用软件]painter 6 手绘实例《粉彩篇》
[常用软件]Painter 6 手绘实例《胶彩篇》  [VB.NET程序]VB.NET实现DirectSound9 (6) 声音特效
[VB.NET程序]Visual Basic 6 逆向工程与反逆向工程 (2)  [VB.NET程序]Visual Basic 6 逆向工程与反逆向工程 (1)
[VB.NET程序]Vb 6 中的多态  [VB.NET程序]几个 WMI 的例子(初级) - 1
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台