如何声明指针(byte ^)?

时间:2009-07-12 14:38:57

标签: delphi

我想声明一个外部函数,但我不能这样做。

这是我的Delphi声明,不能编译。

procedure Encode(input:byte^;output:byte^;size:DWORD);cdecl;external 'blowfish.dll';

这是我的C#声明,它有效。

[DllImport("blowfish.dll")]
public static unsafe extern void Encode(byte* input, byte* output, UInt32 size);

我的问题:编译器表达“(”之后的字节^,因为^。如果我创建一个类型mybyte = byte ^;那么我如何用字节数组中的第一个成员调用该函数 - 它然后不能编译,因为数组不是类型“myByte”?

3 个答案:

答案 0 :(得分:5)

^不应该在类型名称之前吗?

procedure Encode(input:^byte;output:^byte;size:DWORD);cdecl;external 'blowfish.dll';

此外,可能dll需要字节数组而不是指向字节的指针。所以你可能也想调整它。 (在C中,数组和指针的声明方式相同。)

答案 1 :(得分:2)

Jqno做对了。另外,你总是可以使用PByte而不是^ byte。

答案 2 :(得分:1)

procedure Encode(CONST input ; VAR output ; size : DWORD); cdecl; external 'blowfish.dll';

procedure Encode(input : PByte ; output : PByte ; size : DWORD); cdecl; external 'blowfish.dll';

procedure Encode(CONST input ; OUT output ; size : DWORD); cdecl; external 'blowfish.dll';

procedure Encode(input : POINTER ; output : POINTER ; size : DWORD); cdecl; external 'blowfish.dll';

所有这些都取决于你的Delphi程序如何调用函数