我需要使用 .NET 代码阅读使用 Delphi 的 TClientDataset 类编写的文件。这里提到的解决方案对我不起作用。
3 回答
“不在 Windows 平台上运行的 dotNet 程序”对我来说意味着您正在部署 Mono 应用程序。可能在 Linux 上,如果是这种情况,请尝试 WINE 并查看上面建议的 Delph 应用程序是否按预期工作。如果是,那么您离开 dotnet 应用程序机器的问题就解决了,因为两者都将在同一硬件上运行,无需通过网络进行通信。
编辑:由于 OP 现在指定他正在使用 MonoDroid 和 Monotouch,因此不能使用 Wine - 其余选项是:
- 对格式进行逆向工程(首先咨询律师以保护自己免受伤害)
- 向 Embarcadero 询问文件的定义(我对此不抱太大希望)
- 修改 Delphi/C++ 应用程序以 XML 格式导出文件
- 创建一个 Delphi 应用程序来预处理这些 *.cds 并将它们导出为 XML,然后再将它们发送到 iOS / Android 机器。
在四个备选方案中,第四个可能是最快的 - 最好的一个是第三个。
第一个可能会给您带来麻烦,因为世界各地都有针对 rev 工程师的所有法律(在美国有 DMCA,我听说它非常严厉 - 但 IANAL 甚至不是美国公民)。
第二个是赌注。
您需要使用 Delphi 编写一个小应用程序来读取 cds 文件并将其内容写入可以从 .Net 读取的文件(您选择适当的格式)。您可以下载 Delphi 的免费试用版。您可以在单独的 PC 上开发应用程序。您可以将输入 *.cds 文件从有问题的平台 ftp 到此新应用程序所在的 pc。然后运行应用程序并将新创建的输出文件 ftp 到有问题的平台,然后使用 .Net 读取它。
您可以使用 ftp 将文件从一个平台移动到另一个平台。如果您需要在另一个平台上使用(或即将制作!)一个不错的工具,那么没有理由将自己锁定在一个平台上。:-)
实际上,原始 cds 二进制格式在 Hejlsberg/Hansen 提交的相应美国专利中得到了相当广泛的记录。我必须承认,后来 borland 用一些额外的功能(例如嵌套数据集支持)对其进行了扩展,但基本上它仍然是相同的格式,并且几乎没有挖掘 midas 源(他们在 d2010 中发布它),可以构建自己的解析器我做了