У меня есть следующий сценарий в коде C ++, который я портирую на Delphi.
Структура определяется следующим образом:
typedef struct tagMyType
{
LPVOID pData; // allocated by the client
} MyType, FAR* LPMyType;
Я передаю эту структуру во внешнюю DLL, которая заполняет данные в ней.
Согласно документации у меня это гласит следующее:
pData будет указывать на упакованный список строк с нулевым символом в конце
Я объявил запись в Delphi следующим образом:
TMyType = record
pData: POINTER;
end;
PMyType = ^TMyType;
Распределение памяти и вызов DLL выполнены успешно, pData заполняется.
Затем код C ++ обрабатывает это поле как массив, что я не могу сделать в Delphi согласно объявлению pData.
for ( i = 0; i < 10; i++ )
printf( "%d", ((ULONG*)stEnum.pData)[i] );
Я знаю, что C ++ может обрабатывать указатели как массивы, я хотел бы знать, как я могу делать то же самое в Delphi безболезненно.