我需要将C / C++代码*(PUCHAR)(..)传递给delphi,这样我可以毫无错误地使用它,但是我不知道该怎么做。在我在IRC中提出的问题上,有人告诉我:“它转换为指向未签名char的指针,并取消引用该指针,但我认为Delphi中没有这样的东西”。
这是一个例子:
DWORD isENABLED;
...
*(PUCHAR)(isENABLED) = 0x00;
在德尔福会是这样吗?
PUCHAR(isENABLED) := $00; // Is it right?
我知道这个问题可能写得不好,但我不知道怎么问。
谢谢你的帮助。
最佳答案
UCHAR
是unsigned char
。那是Delphi中的Byte
。 PUCHAR
是UCHAR
的指针。那是Delphi中的PByte
。
原始代码将DWORD
强制转换为unsigned char
的指针,然后取消对该指针的引用,并为该unsigned char
分配一个值。
因此,Delphi等效代码为:
PByte(isENABLED)^ := $00;
如果您的Windows单元定义了
PUCHAR
,则可以将其编写为:PUCHAR(isENABLED)^ := $00;