2

C++ プロジェクトを Delphi に変換しようとしていますが、次の 2 つのクラスを変換する方法がわかりません。

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

誰かが知っているなら、助けてください。

ありがとうございました。

4

2 に答える 2

6

クラスは単なる複合構造です。これは Delphi のレコードです。

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);
于 2013-11-11T15:03:24.967 に答える
0

あなたのクラスは、2240 の長さの文字列に 3 つのダブルワードの予約済みスペースが含まれているように見えますCContext(使用されない可能性があります)。 CDataのインスタンスへのポインタにすぎませんCContext。これらを移植する方法をより具体的にするには、それらがどのように使用されるかについてより具体的に説明する必要があります。CData現状では、文字列メンバーを持つのバージョンを実装するだけでよいでしょう。

于 2013-11-11T14:32:10.223 に答える