这样的声明应该如何转换为delphi?
void method (void *pixels);
而且我也有我应该预先分配该变量的信息。
有人可以给我一个提示吗?
如果您需要坚持原始声明格式(例如在转换 C DLL 头文件时),则转换为:
procedure method(pixels: Pointer);
您可以在此处找到有关将 C 标头转换为 Delphi 的更多信息
另一方面,如果您正在转换整个方法或类,您可能希望将其调整为更类似于 Delphi 的代码。我不知道“像素”是什么,所以我很难猜出哪个是最好的选择。
大胆猜测,如果它是一个包含有关每个像素(位置、颜色、Alpha 通道?)的一些信息的矩阵,您可以轻松地使用对象列表处理这样的结构,或者创建自己的类来处理它。
高温高压
假设像素指向像素数组,您可以这样做:
procedure method(var pixels); cdecl;
如果您将像素作为无类型参数传递,它会作为指针隐式传递,这也是 C 声明所做的,因此转换与原始参数完美匹配。使用无类型指针使您可以将其转换为您喜欢的任何内容或获取其地址来获取指针。只要你知道像素的结构,那可能会更方便:
假设像素是一个固定大小的字节数组,其中每个位都是一个像素:
type
TPixels = array[0..7] of Byte;
const
Grey: TPixels = ($55, $AA, $55, $AA, $55, $AA, $55, $AA);
procedure method(var pixels); cdecl;
begin
Move(Grey, pixels, Sizeof(Grey));
// ...
TPixels(pixels)[3] := $FF;
// ...