任务:
用 Delphi 编写的应用程序接受一个包含三个字段的结构(record
,就 Delphi 而言)。我可以使用 SendMessage
(Win32 API) 函数发送这个结构的指针。
那么一个问题是:
Delphi如何在内存中为Delphi维护一定的结构表示?
它有类型
PWPModPostData = ^ TWPModPostData;
TWPModPostData = record
DataType: Integer;
Data: PChar;
Next: PWPModPostData;
end;
如何在C中定义它?我的意思是,Delphi 结构中是否有任何隐藏字段或服务字段?
最佳答案
不,没有隐藏字段,Delphi 记录和 C 结构可以 1:1 相互映射,但有几点需要注意:
不要使用任何 C 不支持的数据类型 理解。这包括对象, 动态数组和 Delphi 字符串。
C 和 Delphi 有时有不同 关于如何字节对齐字段的想法。 测试您的记录并验证 他们在 C 端工作。如果他们 不要,尝试使用打包记录 而不是记录。
传递指向记录的指针时 从 C 到 Delphi,反之亦然,使 确保接收它的一方 不尝试释放或重新分配 内存。它属于内存 创建它的经理。
关于c - Delphi 记录和 C 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1857288/