DELPHI 7 上的 CromisIPC 编译错误

CromisIPC compilation error on DELPHI 7

我获得了 CromisIPC cromis ipc site download 并且 compile/rum 成功地在 delphi XE5 上进行了演示和自定义项目。没有任何错误。

但是,当我得到相同的代码并放入 DELPHI 7 项目时,我在 Cromis 单元上出错。 AnyValue,编译错误。

  TAnyValue = packed record
  private
    ValueData: TValueDataType;
    {$IFDEF AnyValue_HookingOff}
      IntfData : IInterface;
    {$ELSE}
      {$IFNDEF CPUX64}
        Padding : array [0..3] of Byte;
      {$ENDIF}
    {$ENDIF}
    ValueType: TValueType;
    function GetAsInt64: Int64; inline;

完全在线:

  ValueData: TValueDataType; 
[Error] Cromis.AnyValue.pas(210): ',' or ':' expected but identifier 'ValueData' found

[Error] Cromis.AnyValue.pas(219): 'END' expected but 'FUNCTION' found

我在 64 位 windows 7 上使用 delphi 7 和 32 位 VCL 项目。

相同的代码在 XE5 上编译。

这里发生了什么?有什么想法吗?

tl;dr 此代码不适用于 Delphi 7.


Delphi 7 条记录中不允许使用可见性说明符。编译器反对使用 private。您可以删除它,但下一个问题将是在记录中声明的所有方法。同样,它们在 Delphi 7.

中不可用

您可以通过从 packed record 切换到 packed object 来取得一些进展。但是,我认为这不太可能一帆风顺。要使此代码在 Delphi 7 上编译,需要大量工作。坦率地说,您需要成为 Delphi 专家才能完成这项任务。

您可能会尝试查找实际支持 Delphi 7 的库的旧版本。您也许可以从库的作者那里得到一个。但请注意 website 表示:

All code is Delphi 2006 and upwards compatible. I will not support older Delphi version. If you still use them, then its time to upgrade.

这导致了另一个明显的解决方案。升级到 Delphi.

的现代版本

如果那不可能,那么您应该寻找其他图书馆。