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

这是一个例子:

DWORD isENABLED;

...

*(PUCHAR)(isENABLED) = 0x00;

在德尔福会是这样吗?
PUCHAR(isENABLED) := $00;   // Is it right?

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

最佳答案

UCHARunsigned char。那是Delphi中的BytePUCHARUCHAR的指针。那是Delphi中的PByte

原始代码将DWORD强制转换为unsigned char的指针,然后取消对该指针的引用,并为该unsigned char分配一个值。

因此,Delphi等效代码为:

PByte(isENABLED)^ := $00;

如果您的Windows单元定义了PUCHAR,则可以将其编写为:
PUCHAR(isENABLED)^ := $00;

08-16 22:11