Modernize Studio
语言:简体中文
发邮件给我们

把 Delphi 应用迁移到网页

上世纪 90 年代和本世纪头十年,Delphi 是开发企业软件的常见选择,许多这类程序至今仍在每天使用,往往通过 BDE 读取 Paradox 或 dBase 表。我们把它们迁移为使用 SQL 数据库的网页应用,数据和规则不变,从此不再需要配置得分毫不差的电脑才能运行。

为什么是现在

如今维护 Delphi 的 Embarcadero 已弃用 Borland Database Engine。其文档写明 BDE 不会再改进、永远不会支持 Unicode、不应用于新开发,并建议改用 FireDAC。然而大多数老 Delphi 程序仍通过它读写 Paradox 或 dBase 表。

BDE 是为 32 位 Windows 和局域网文件共享设计的。共享盘上的 Paradox 表依赖锁文件和每台电脑上必须完全一致的 BDE 设置,只要有一台机器设置错误,表和索引就可能损坏。每添一台新电脑、每升级一次 Windows,都意味着又要手动安装配置一遍。

  1. Windows 10微软停止支持

迁移内容

程序本身,以及它所依赖的数据文件,无论现状如何。

  • 窗体和数据感知控件

    .dfm 文件中的窗体,包括 TDBGrid、TDBEdit、TDBLookupComboBox 以及主从布局。它们会变成字段和操作顺序都相同的网页。

  • Paradox、dBase 和 InterBase 数据

    通过 BDE 读取的表,或 InterBase、Firebird、SQL Server、Oracle 等数据库。我们把数据迁到 SQL Server 或 MySQL,保留主键、索引和关系。

  • 数据模块和业务逻辑

    TDataModule 单元中的代码,BeforePost、OnCalcFields 等数据集事件中的代码,以及计算字段和查阅字段。我们把这些规则集中到服务器端的服务中。

  • 报表

    QuickReport、ReportBuilder、Rave Reports 或 FastReport 报表,包括事件中带代码的报表。它们会变成内容相同的 PDF 文档。

  • 第三方组件

    来自 DevExpress、TMS、InfoPower 或 RxLib 等组件包的表格、编辑器和工具,往往只适用于某一个 Delphi 版本。我们会核实程序实际用到了其中哪些功能。

  • 导入、导出和计划任务

    与其他系统交换的文本和 CSV 文件、给会计的导出文件,以及由 Windows 任务计划程序启动的程序。它们会变成服务器上的计划任务。

网页版的样子

示例说明,数据为虚构

库存程序在 Windows XP 下的 Delphi 中可能的样子,以及同样数据在网页应用中的样子。

拖动滑块,或使用键盘方向键。

各部分迁移后的去向

在 Delphi 中:窗体(.dfm)和单元(.pas)
在网页应用中:网页,逻辑放在服务器上
在 Delphi 中:通过 BDE 访问的 Paradox 或 dBase 表
在网页应用中:SQL Server 或 MySQL,保留主键和关系
在 Delphi 中:计算字段和查阅字段
在网页应用中:在数据库或服务中完成的计算和连接
在 Delphi 中:每台电脑上的 BDE 别名和设置
在网页应用中:在服务器上配置的一个连接
在 Delphi 中:QuickReport 或 FastReport 报表
在网页应用中:由服务器生成的 PDF 文档
在 Delphi 中:所有用户共用的网络驱动器
在网页应用中:由数据库管理的并发访问

迁移流程

  1. 48 小时内完成评估

    请发给我们程序及其数据文件夹(Paradox 或 dBase 文件,或数据库备份),如有源代码(.dpr、.pas、.dfm)也请一并提供。我们会在 48 小时内回复一份书面报告:程序目前的功能、风险所在、网页版的结构设想、试点模块的固定价格以及其余部分的估价。评估免费,不附带任何义务。

  2. 试点模块

    我们先在您真实数据的副本上构建应用的一部分,通常是使用最多的部分。在决定其余部分之前,员工可以在日常工作中实际使用。

  3. 同样的数据,同样的结果

    我们让同一批记录分别经过 Delphi 程序和新应用,比对库存、合计和打印出的单据。我们发现的每条业务规则还会写成自动化测试,此后每次发布新版本前都会重新运行。您会收到列明每项核对结果的报告。

  4. 30 天并行运行

    完整应用就绪后,Delphi 程序会与之并行使用 30 天。任何差异都会在旧程序仍在时暴露出来,我们在约定价格内修正。

常见陷阱及应对方法

  1. BDE 和 Paradox 的工作方式

    Paradox 表依赖锁文件、网络上共享的控制文件(PDOXUSRS.NET)以及每台电脑上必须一致的 BDE 设置(如 LOCAL SHARE)。索引损坏和“Table is busy”错误十分常见。迁移前,我们会修复可修复的部分,并报告无法读取的记录。

  2. 字符编码

    BDE 按表的语言驱动所设定的代码页存储文本,而 Delphi 2009 及以后版本使用 Unicode 字符串。带重音的字母和特殊符号正是迁移最常出错的地方,因此我们会检查每张表的编码,并与您一起比对转换后的文本样本。

  3. 藏在数据集事件中的逻辑

    写在 BeforePost、OnValidate 或 OnCalcFields 中的规则,会在每次保存或显示记录时悄然执行,只看窗体很容易漏掉。我们会在代码中找出每个事件处理程序,并列出它们执行的规则。

  4. 计算字段和查阅字段

    有些字段只存在于程序中,表里并没有,却像存储的数据一样出现在界面和报表上。我们把它们重建为计算值,并与原结果核对。

  5. 没有源代码的组件

    有些第三方组件包当年是以针对某个 Delphi 版本编译好的单元形式购买的。如果程序依赖其中某个组件进行计算而不只是显示,我们会根据结果还原它的行为,并让两个程序处理同一批数据来加以确认。

  6. 日期和数字格式

    Paradox 和 dBase 的日期字段、多年前以两位数输入的年份,以及取决于 Windows 区域设置的小数分隔符,在数据迁入 SQL 数据库时都需要明确处理。我们会列出导入过程中发现的异常,并与您一起解决。

价格和付款

评估

免费

书面报告,48 小时内

试点模块

€1,000–1,500

通常;开工时付 50%,验收时付 50%

付款条件

启动时支付 50%,验收时支付 50%。尾款须在上线和交付源代码之前付清。较大的项目按约定阶段分期付款。

评估免费。如果决定不继续,报告归您所有,无需支付任何费用。

价格固定,并在开工前以书面形式确定。如果工作内容发生变化,我们会发送新的书面报价,经您确认后才进行额外工作。

对于完整迁移,我们的目标是比一般软件公司的报价低 40% 到 60%。我们能做到,是因为我们是一家小型工作室,没有写字楼租金,也没有销售团队。

价格不含增值税。

估算价格

一次真实的迁移,由测试验证

Northwind 是微软随 Access 附带的示例数据库,并不是我们的客户。我们把一份公开副本迁移到 SQLite 和 PostgreSQL,通过自动化测试将每张表、每个查询与原始数据逐一比较,并在此基础上构建了一个可运行的网页应用。案例研究给出了具体数字,等效性报告列出了每一项核对。

Northwind 是一个 Access 数据库,但对于 Delphi,我们采用同样的方法:迁移,用同样的数据将结果与原始程序比较,并让新旧程序并行运行。

等效性报告(英文) · 可点击预览和示例评估(演示)

常见问题

我们的 Delphi 程序使用网络盘上的 Paradox 表,数据能迁移吗?

能。我们直接读取 Paradox 或 dBase 文件,转换到 SQL Server 或 MySQL,并在迁移前后比对记录数和合计。损坏的记录会报告给您,不会被悄悄丢弃。

能不能直接升级到新版 Delphi?

可以,对有些程序这也是更合理的做法:应用仍是 Windows 程序,用 FireDAC 替换 BDE,并更新代码。如果需要在任何浏览器中使用、每台电脑都无需安装,网页应用更合适。两种方案都可行时,评估报告会加以比较。

我们没有源代码,有问题吗?

不一定。我们可以从正在使用的程序、数据文件以及操作录屏入手。有源代码时评估会更精确;信息不足的地方,我们会明确指出。

你们支持哪些 Delphi 版本?

从上世纪 90 年代早期的 Borland 版本到当前的 Embarcadero 版本,用任何版本编写的程序都可以。版本主要影响字符串处理和可用组件,我们会在评估中注明。

网页应用能继续使用我们的 Firebird 或 InterBase 数据库吗?

能,前提是还有其他程序依赖它。这时网页应用连接同一个数据库,更换数据库可以以后再做,也可以不做。

30 天并行运行期间会发生什么?

员工在新应用中工作的同时,Delphi 程序仍可随时使用,方便他们用实际业务核对结果。这期间发现的任何差异,都在约定价格内修正。

联系我们

请选择您方便的联系方式。我们会在一个工作日内用中文通过电子邮件回复您。

通过邮件

riccardo@modernizestudio.com
写邮件

请把程序及其数据文件夹(如有顾虑可用测试数据)或一段功能说明发给我们。我们会在一个工作日内回复。

把文件发给我们

如果程序是用 Access、Excel、VB6、Delphi 或早期 .NET 开发的,您在发送文件后 48 小时内即可收到一份免费的书面评估。

  1. 复制一份文件,如您愿意,可使用测试数据。
  2. 把它附在表单或邮件中,最好放进有密码保护的压缩包,并另行发送密码。如有需要,我们会先签署保密协议。
  3. 48 小时内:收到评估报告和试点模块的固定价格。

我们在意大利办公。

给我们留言

可选。数据库、Excel 工作簿、截图或需求说明,最大 10 MB。更大的文件请在留言中附上下载链接。

发邮件给我们

点击按钮会打开您的邮件程序并填好内容。只有在邮件程序中点击“发送”后才会真正发出。

发邮件给我们