【问题标题】:How to pass C/C++ *(PUCHAR)(..) correctly?如何正确传递 C/C++ *(PUCHAR)(..)?
【发布时间】:2015-07-29 19:52:06
【问题描述】:

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

这是一个例子:

DWORD isENABLED;

...

*(PUCHAR)(isENABLED) = 0x00;

在Delphi中会是这样吗?

PUCHAR(isENABLED) := $00;   // Is it right?

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

【问题讨论】:

    标签: c++ c delphi delphi-7


    【解决方案1】:

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

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

    所以 Delphi 的等效代码是:

    PByte(isENABLED)^ := $00;
    

    如果您的 Windows 单元定义了PUCHAR,请随意将其写为:

    PUCHAR(isENABLED)^ := $00;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      相关资源
      最近更新 更多