【问题标题】:Passing complex information via COM to C# from Delphi code从 Delphi 代码通过 COM 将复杂信息传递给 C#
【发布时间】:2023-03-12 02:55:01
【问题描述】:

出于各种原因,比如保护投资等。我需要在Delphi和一个C#程序之间来回传递一系列复杂的记录(众多的字段和记录)。我想我应该使用 IEnumVariant,但似乎无法使用类型库设计器进行设计。

任何帮助将不胜感激。

谢谢

更新

我想我想问的问题需要对数据的复杂性进行一些解释。

我需要通过 COM 将“记录”集合导出到 C#(或任何其他语言),每个记录由一个“字段”集合组成,每个字段由多个属性组成。

所以它是一个集合一个集合的集合!不要问我我们是怎么到这里的,我们就是这样。

所以我有属性 -> 字段 -> 记录类型的结构。我了解我需要导出的内容(由于公司原因,我无法在此处发布任何详细信息),但不知道如何开始在 COM 中导出该数据。

也许我应该从头开始创建一个测试程序,它将模仿我需要的结构,然后逐渐将它们 COMize 并查看我的目标。

【问题讨论】:

    标签: c# delphi com


    【解决方案1】:

    将信息封装在类中。适用于任何语言,也适用于 COM。

    【讨论】:

    • 除了 C# 对 Delphi 类一无所知,反之亦然。您根本没有回答 OP 的问题 - 问题是“如何通过 COM 在 C# 和 Delphi 代码之间传递复杂信息?”。说“使用类”没有帮助。
    • 确实如此。其他任何事情都是有问题的。 COM 不能很好地支持结构,因为它们的布局非常依赖于编译器。映射一个类不是问题,属性和方法映射到一个 COM 接口。这是 .NET 和 Delphi 中内置的粘合剂。
    【解决方案2】:

    我要回答我自己的问题!

    我创建了一系列源自 IEnumVARIANT 的类,代表数据位、列表和记录的不同集合。每个字段都是一个简单的 COM 接口定义。

    我使用了来自this location 的示例,因为我将字段/记录/等的集合实现为 TList。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多