【问题标题】:Read a Delphi TClientDataset Files with .NET使用 .NET 读取 Delphi TClientDataset 文件
【发布时间】:2011-08-16 04:55:06
【问题描述】:

我需要使用 .NET 代码读取使用 Delphi 的 TClientDataset 类编写的文件。 here 提到的解决方案对我不起作用。

【问题讨论】:

  • 我对@9​​87654322@一无所知,但也许您应该解释一下为什么该解决方案不适合您?
  • 我需要写入的文件来自其他应用程序,我需要使用不在 Windows 平台上运行的 .NET 程序读取文件。所以我无法使用将文件导出为 xml 的 delphi 应用程序。
  • @Noffls,该文件以哪种格式写入? XMLbinary?
  • 二进制; XML 不会是问题 ;-)
  • @Noffls,据我所知,如果没有记录,我知道 CDS(二进制)格式(所以你在这里不走运)。您说您不能编写一个delphi应用程序来将这些文件导出(或转换)为XML,因为该应用程序必须在非Windows平台上运行。但是如何用delphi 编写一个将这些文件公开为XML 的Web 服务呢? (显然这个 web 服务必须从 windows 操作系统运行)然后从 .net 使用这个 web 服务

标签: .net delphi tclientdataset


【解决方案1】:

“不在 Windows 平台上运行的 dotNet 程序” 对我来说意味着您正在部署 Mono 应用程序。可能在 Linux 上,如果是这种情况,请尝试 WINE 并查看 Delph app suggested above 是否按预期工作。如果是,那么您离开 dotnet 应用程序机器的问题就解决了,因为两者都将在同一硬件上运行,无需通过网络进行通信。

编辑:由于 OP 现在指定他正在使用 MonoDroid 和 Monotouch,因此不能使用 Wine- 其余选项是:

  • 对格式进行逆向工程(先咨询律师以保护自己免受伤害)
  • 向 Embarcadero 询问文件的定义(我对此不抱太大希望)
  • 修改 Delphi/C++ 应用程序以 XML 格式导出文件
  • 创建一个 Delphi 应用程序来预处理这些 *.cds 并将它们导出为 XML,然后再将它们发送到 iOS / Android 机器。

在四个备选方案中,第四个可能是最快的 - 最好的是第三个。

第一个可能会给您带来麻烦,因为世界各地都有针对 rev 工程师的所有法律(在美国,我听说 DMCA 非常严厉 - 但 IANAL 甚至不是美国公民)。

第二个是赌。

【讨论】:

  • 是单声道;但它是 android 的 monotouch 和 mono。所以酒是行不通的。
  • 最后我们决定修改原始应用程序以将数据集保存在 XML 中。幸运的是,数据集的加载方法可以识别文件是二进制格式还是 Xml 格式,因此旧版本的应用程序也可以加载新文件。
【解决方案2】:

您需要使用 Delphi 编写一个小应用程序来读取 cds 文件并将其内容写入您可以从 .Net 读取的文件(您选择适当的格式)。您可以下载 Delphi 的免费试用版。您可以在单独的 PC 上开发应用程序。您可以将输入 *.cds 文件从有问题的平台 ftp 到此新应用程序所在的 pc。然后运行应用程序并将新创建的输出文件 ftp 到有问题的平台,然后使用 .Net 读取它。

您可以使用 ftp 将文件从一个平台移动到另一个平台。如果您需要在另一个平台上使用(或即将制作!)一个不错的工具,那么没有理由将自己锁定在一个平台上。 :-)

【讨论】:

  • 正如我在 cmets 中对原始问题所写的那样,无法发送文件,因为不允许将数据发送到服务器/网络服务。
  • @Noffls,这是一个没有人知道如何阅读的 .cds!使用 U 盘!用 128 位密钥加密 cds 文件!解决方案足够清晰和安全。没有人建议你在 Facebook 上发布它!
  • @Noffls,如果您没有访问该文件的权限,那么为什么还要尝试使用 .Net 读取它呢?为什么有人会认为 ftp/webservice 传输不如您未来的 .Net 代码安全?
  • @Noffls,如果您想使用 .Net 阅读它,这是否意味着您可以安全访问文件的内容?大声笑,这与安全无关。
  • @Sam:没有冒犯,但我不能使用网络服务或服务器是一个既定的事实。我们的客户使用其他人的个人数据,如果他们将文件传输给任何第三方(包括我的公司)是违法的。
【解决方案3】:

实际上原始的 cds 二进制格式在 Hejlsberg/Hansen 提交的相应美国专利中得到了相当广泛的记录。我必须承认,后来 borland 用一些额外的功能(例如嵌套数据集支持)对其进行了扩展,但基本上它仍然是相同的格式,并且几乎没有挖掘 midas 源(他们在 d2010 中发布它),可以构建自己的解析器我做了

【讨论】:

  • 你的解析器是什么语言的?它是只解释 CDS 还是可以直接将行写入 CDS 文件?
  • 这是我自己基于用delphi编写的hyperbase实现的midas的一部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 2014-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多