【问题标题】:Convert class from C++ to Delphi将类从 C++ 转换为 Delphi
【发布时间】:2013-11-11 14:25:11
【问题描述】:

我正在尝试将一个 C++ 项目转换为 Delphi,但我不知道如何转换这两个类:

class CData;
class CContext;

class CData
{
public:
    CContext* Data;
};

class CContext
{
public:
    char Unk[2240];
    DWORD data1;
    DWORD data2;
    DWORD data3;
};

用法:

CData* Data = (CData*)(0x00112233);

//This code obtain the bytes in memory of the address "0x00112233" based on the sizes specified at CContext class

如果有人知道,请帮帮我。

谢谢。

【问题讨论】:

    标签: c++ delphi class


    【解决方案1】:

    类只是一个简单的复合结构。这是德尔福的记录:

    type
      TData = record
        unk: array [0..2240-1] of AnsiChar;
        data1, data2, data3: DWORD;
      end;
    

    你的上下文类型只是一个指向它的指针:

    type
      TContext =^TData;
    

    在 C 代码中,这个指针被包装在一个对我来说似乎毫无意义的类中。

    声明一个变量,它是指向 TContext 的指针:

    var
      context: ^TContext;
    

    这样分配:

    context := Pointer($00112233);
    

    【讨论】:

      【解决方案2】:

      看起来你的CContext 类只不过是一个长度为 2240 的字符串,带有 3 个保留空间的双字(可能从未使用过)。 CData 只不过是一个指向CContext 实例的指针。要更具体地了解如何移植这些,您需要更详细地说明它们的使用方式。就目前而言,您很可能只实现一个具有字符串成员的CData 版本。

      【讨论】:

      • #Zac Howland,我已经编辑了问题并添加了类的用法
      • @paulohr David 几乎回答了这个问题,但我要说的是那些 DWORD 是否已设置。如果不使用它们,那么它们只是保留空间,您可能不需要在 Delphi 中使用它们。您可以只拥有文本记录。
      猜你喜欢
      • 1970-01-01
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 2013-06-30
      • 1970-01-01
      • 2019-02-23
      • 2013-10-30
      • 2011-06-28
      相关资源
      最近更新 更多