我在C代码中有以下场景,我正在移植到Delphi .

结构定义如下:

typedef struct tagMyType
{
    LPVOID  pData;              // allocated by the client
} MyType, FAR* LPMyType;

我将此结构传递给外部DLL,该DLL填充其中的数据 . 根据我的文件,它说明如下:

pData将指向空终止字符串的压缩列表

我在Delphi中声明了如下记录:

TMyType = record
  pData: POINTER;
end;
PMyType = ^TMyType;

内存分配和DLL调用成功,pData被填充 .

然后C代码将此字段视为一个数组,根据声明的pData,我无法在Delphi中执行此操作 .

for ( i = 0; i < 10; i++ )
    printf( "%d", ((ULONG*)stEnum.pData)[i] );

我知道C可以将Pointers作为数组处理,我想知道如何在Delphi中无痛地执行相同的操作 .