如何将此声明转换为delphi?
void method (void *pixels);
我还有一些信息,我应该预先分配该变量。
有人能给我一个提示吗?
答案 0 :(得分:3)
如果您需要坚持原始声明格式(例如转换C DLL标头时),转换将是:
procedure method(pixels: Pointer);
您可以找到有关将C标头转换为Delphi here
的更多信息另一方面,如果要转换整个方法或类,则可能需要将其调整为更类似于Delphi的代码。我不知道“像素”是什么,所以我几乎猜不出哪个是最好的选择。
粗略猜测,如果它是一个包含每个像素(位置,颜色,alpha通道?)的信息的矩阵,您可以轻松地处理像对象列表那样的结构,或者创建自己的类来处理它。 / p>
HTH
答案 1 :(得分:2)
假设像素指向像素数组,您可以这样做:
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;
// ...