热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

利用Kylix3从Windows迁移到Linux

文章标题:利用Kylix3从Windows迁移到Linux。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

    简介

    使用象 Borland? Delphi 7? Studio 这样的工具和 IBM? DB2? Universal Database? 这样的数据库的优越性之一就在于,平台之间的迁移只需要进行少量更改和一次重新编译。在本系列文章的第一篇中,我用 Delphi 7 Studio 创建了一个连接到 IBM DB2 UDB 的应用程序,在我的第二篇文章中,我给这个应用程序添加了更多功能,如主从复合结构(master-detail)形式的报告,以使它更有趣和有用。既然我已经创建了一个可执行的应用程序,就让我们继续前进并且来个大跨越,使用 Borland Kylix? 3 将它从运行于 Microsoft? Windows? 上的 Delphi 7 应用程序转变为 Linux? 应用程序。

    利用 Kylix 3 迁移到 Linux 相当容易,Borland Kylix 3 是一个用于 Linux 开发的快速应用程序环境。Kylix 使用 Delphi 7 Object Pascal(和 C++)作为开发语言,并且使用了用于 Linux 的为大家所熟悉的 RAD 环境。Borland 工具提供的最大优点之一在于,迁移一个应用程序与其说是“移植”项目,还不如说是重新编译 Windows/Delphi(或 Linux/Kylix)项目。

    当利用 Kylix 重新编译应用程序,以将它从 Windows 和 Delphi 7 迁移到 Linux 时,有几点必须牢记。首先,Kylix 的所有版本都包含 TSQLClientDataSet 组件,Delphi 6 也有该组件,但是在 Delphi 7 中不鼓励使用它,并用 TSimpleDataSet 取代了它。尽管这看起来似乎不是大问题,但是一旦您意识到它是一个问题时,这就意味着只能使用 Delphi 7 编译 TSimpleClientDataSet,而只能用除 Delphi 7 以外的其它工具编译 TSQLClientDataSet.

    将应用程序从 Windows 迁移到 Linux 涉及到获取源文件以及将它们从 Windows 传送到 Linux 文件系统。在 Linux 上,文件名(和单元名)是区分大小写的,因此,如果您添加了一些自己的单元,则必须要小心(Delphi 7 将确保所有单元和文件名都是在注意区分大小写的情况下命名的)。但是,您不必将所有项目文件都从 Delphi 转移到 Kylix.特别是包含特定于 Windows 选项的 .cfg 和 .dof 文件。Kylix 将把这些文件作为 .conf 和 .kof 文件重新生成。简而言之,您只需将主项目文件(。dpr 和 .res)和单元文件(。pas 和 .xfm)从 Windows 传送到 Linux(本文使用的代码文件可在文章的结尾获得)。

    Linux 上的 DB2

    除了在 Linux 上使用 Kylix 之外,我们还必须连接到 Linux 上的一个 DB2 版本(当然,您也可以始终与其它平台上的 DB2 数据库连接)。一点提示:我已尝试了使用 DB2 通用数据库 Personal Edition v7.x,但是遇到一个错误消息:SQL Error: Error mapping failed.其他一些使用过 dbExpress 和 Kylix 的人已经报告了这个消息,在这种情况下,只要确保在 Linux 上使用最新的 DB2 版本(即 v8.1 beta 测试版,可从 IBM 网站下载)就可解决这个问题。

    少量的源代码更改

    将源文件从 Windows 迁移到 Linux 后,在 Kylix 中打开项目(请参阅图 1)。当打开项目并在 Object Inspector 中查看 SQLConnection 特性时,您会看到两个特定于 Win32 而无法在 Linux 上使用的特性值:LibraryName(设置为 DBEXPDB2.DLL)和 VendorLib(设置为 db2cli.dll)。Linux 没有 DLL;它使用 .so 文件来代替。要更改这些值,您必须先为 ConnectionName 特性选择另一个值,然后再重新选择 DB2Connection 作为 ConnectionName.这将把 LibraryName 设置为 libsqldb2.so.1,并把 VendorLib 设置为 db2cli.dll.

好消息是当您将项目从 Windows 上的 Delphi 迁移到 Linux 上的 Kylix 时,只需更改这两个特性。坏消息是必须手工完成。每当某个平台上进行了新的更改时就必须手工执行上述更改,这不是您希望做的。又一个好消息是,通过在窗体的 OnCreate 事件处理程序中编写一些代码,并将正确的值赋给 LibraryName 和 VendorLib(以及主窗体的 Caption),我们可以解决这个问题,如下所示:

procedure TForm1.FormCreate(Sender: TObject);
begin
{$IFDEF MSWINDOWS}
Caption := 'Delphi 7 talking to DB2 using dbExpress';
SQLCOnnection1.LibraryName := 'DBEXPDB2.DLL';
SQLCOnnection1.VendorLib := 'db2cli.dll';
{$ENDIF}
{$IFDEF LINUX}
Caption := 'Kylix 3 talking to DB2 using dbExpress';
SQLCOnnection1.LibraryName := 'libsqldb2.so.1';
SQLCOnnection1.VendorLib := 'libdb2.so';
{$ENDIF}
cdsEMPLOYEE.Open;
cdsEMP_ACT.Open;
cdsEMP_PHOTO.Open;
cdsEMP_RESUME.Open
end;

注:我们不能简单地在第一个 {$IFDEF} 之后添加 {$ELSE},因为 Linux 不再是 MSWINDOWS 的唯一替代平台,现在,Delphi 7 Studio(在用于 .NET 的预览版命令行编译器中)还支持 CLR 作为平台。

另一个您必须检查的特性是 TSQLMonitor 组件的 FileName 特性,例如,它不应当使用 / 或 \ 字符,而应指向一个文件名。最后还应说明,MidasLib、dbExpDB2 和 CrtL 单元在 Linux 上不可用,因此您必须利用 Midas.so 和 dbexpdb2.so 库来部署可执行文件。

当您 Windows 和 Linux 上拥有了单一源项目后,您可以在 Delphi 或 Kylix 中进行工作(这会导致项目源代码进行复杂合并),或者在一个环境中工作而只在另一个环境中重新编译。就个人而言,我一直都在 Windows 上使用 Delphi IDE 设计我的应用程序,然后把它传送到 Linux 上并用 Kylix 重新编译。这样,我可以让 SQLConnection 组件指向 DB2 的 Windows DLL(而不是 Linux .so 库)。

结束语

有了 Delphi 7 或 Kylix 3 和 DB2,在构建 Linux 应用程序时,您就不必因为工具或数据库的可用性而受困于某一个平台,或者牺牲 RAD 环境。在我的下一篇文章中,我将结合 dbExpress 数据访问层来使用 Delphi WebSnap 组件,以构建带有 DB2 后端的 Web 服务器应用程。


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
author-avatar
mobiledu2502881303
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有