无效方法(无效*像素);到德尔福宣言



这样的声明应该如何转换为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;
  // ... 

最新更新