Как правильно передать C / C ++ * (PUCHAR) (..)?

Мне нужно передать код C / C ++ * (PUCHAR) (..) в Delphi, чтобы я мог использовать его без ошибок, но я не знаю, как именно это сделать. На вопрос, который я задал в IRC, кто-то сказал мне, чтоон приводит к указателю на unsigned char и разыменовывает этот указатель, но я не думаю, что в Delphi есть такая вещь».

Вот пример:

DWORD isENABLED;

...

*(PUCHAR)(isENABLED) = 0x00;

В Delphi будет так?

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

Я знаю, что этот вопрос не может быть правильно написан, но я не знаю, как именно это задать.
Спасибо за вашу помощь.

2

Решение

UCHAR является unsigned char, Это Byte в Дельфи. PUCHAR это указатель на UCHAR, Это PByte в Дельфи.

Оригинальный код DWORD быть указателем на unsigned char, затем отменяет ссылки на этот указатель и присваивает значение этому unsigned char,

Итак, эквивалентный код Delphi:

PByte(isENABLED)^ := $00;

Если ваш модуль Windows определяет PUCHAR тогда не стесняйтесь написать это как:

PUCHAR(isENABLED)^ := $00;
6

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector