我需要将C / C ++代码*(PUCHAR)(..)传递给delphi,这样我就可以毫无错误地使用它,但我不知道究竟是怎么做的。在我在IRC中提出的问题中,有人告诉我" 它投射到指向未签名的char并指向该指针,但我不认为在Delphi中有这样的东西& #34;
以下是一个例子:
DWORD isENABLED;
...
*(PUCHAR)(isENABLED) = 0x00;
在Delphi中会是这样的吗?
PUCHAR(isENABLED) := $00; // Is it right?
我知道这个问题可能没有写好,但我不知道究竟是怎么回事。 谢谢你的帮助。
答案 0 :(得分:6)
UCHAR
是unsigned char
。这是德尔福的Byte
。 PUCHAR
是指向UCHAR
的指针。这是德尔福的PByte
。
原始代码将DWORD
转换为指向unsigned char
的指针,然后取消引用该指针,并为该unsigned char
指定值。
所以Delphi等效代码是:
PByte(isENABLED)^ := $00;
如果您的Windows设备定义了PUCHAR
,请随时将其写为:
PUCHAR(isENABLED)^ := $00;