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

Mik*_*ord 2 c c++ delphi delphi-7

我需要将C/C++代码*(PUCHAR)(..)传递给delphi,这样我就可以使用它而没有错误,但我不知道究竟是怎么做的.在我在IRC中提出的问题中,有人告诉我" 它转向指向未签名的char和指针的指针,但我认为在Delphi中没有这样的东西 ".

这是一个例子:

DWORD isENABLED;

...

*(PUCHAR)(isENABLED) = 0x00;
Run Code Online (Sandbox Code Playgroud)

在Delphi中会是这样的吗?

PUCHAR(isENABLED) := $00;   // Is it right?
Run Code Online (Sandbox Code Playgroud)

我知道这个问题可能没有写好,但我不知道究竟是怎么回事.谢谢你的帮助.

Dav*_*nan 6

UCHAR是一个unsigned char.那是Byte在Delphi中.PUCHAR是指针UCHAR.那是PByte在Delphi中.

原始代码将其DWORD转换为指针unsigned char,然后取消引用该指针,并为其指定值unsigned char.

所以Delphi等效代码是:

PByte(isENABLED)^ := $00;
Run Code Online (Sandbox Code Playgroud)

如果您的Windows单元定义,PUCHAR则可以随意将其写为:

PUCHAR(isENABLED)^ := $00;
Run Code Online (Sandbox Code Playgroud)