delphi记录和c结构

Vas*_*nko 3 c delphi struct record

任务:

用Delphi编写的应用程序接受record三个字段的结构(就Delphi而言).我可以使用SendMessage(Win32 API)函数发送此结构的指针.

所以一个问题是:

如何用Delphi在Delphi的内存中维护某些结构表示?

它有类型

PWPModPostData = ^ TWPModPostData;
TWPModPostData = record
   DataType: Integer;
   Data: PChar;
   Next: PWPModPostData;
end;
Run Code Online (Sandbox Code Playgroud)

如何在C中定义它?我的意思是,Delphi结构中是否有隐藏或服务字段?

Mas*_*ler 9

不,没有隐藏字段,Delphi记录和C结构可以1:1相互映射,但有一些注意事项:

  • 不要使用C不理解的任何数据类型.这包括对象,动态数组和Delphi字符串.

  • C和Delphi有时对字节对齐字段有不同的看法.测试您的记录并验证它们是否在C端工作.如果他们不这样做,请尝试使用打包记录 而不是记录.

  • 将指针从C传递到Delphi或反之亦然时,请确保接收它的一方不会尝试释放或重新分配内存.它属于创建它的内存管理器.