|
升级到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] 下一页 |