如何正确传递 C/C++ *(PUCHAR)(..)?

How to pass C/C++ *(PUCHAR)(..) correctly?

我需要将 C/C++ 代码 *(PUCHAR)(..) 传递给 delphi 这样我就可以毫无错误地使用它,但我不知道具体怎么做.在我在 IRC 中提出的问题中,有人告诉我“ 它转换为指向 unsigned char 的指针并取消引用该指针,但我认为 Delphi[=22= 中没有这样的东西]".

这是一个例子:

DWORD isENABLED;

...

*(PUCHAR)(isENABLED) = 0x00;

在Delphi会是这样吗?

PUCHAR(isENABLED) := [=12=];   // Is it right?

我知道这个问题可能写得不好,但我不知道该怎么问。 感谢您的帮助。

UCHAR 是一个 unsigned char。那是 Delphi 中的 BytePUCHAR 是指向 UCHAR 的指针。那是 Delphi 中的 PByte

原始代码将 DWORD 转换为指向 unsigned char 的指针,然后取消引用该指针,并为 unsigned char 赋值。

所以 Delphi 等效代码是:

PByte(isENABLED)^ := [=10=];

如果您的 Windows 单位定义了 PUCHAR 那么请随意将其写为:

PUCHAR(isENABLED)^ := [=11=];