아래의 C ++ 코드 조각을 Delphi로 변환하려고합니다.
DWORD n;
memcpy(&n, lpData, sizeof(n)); <==== the C++ data type : LPBYTE lpData = NULL;
wprintf(L"REG_DWORD - ValueName: %s, Data: %u\n", pValueName, n);
Delphi 부분을 모르고 다음과 같은 코드를 시도했습니다.
lpData: array of byte;
n : DWord;
// then do not know how to use
procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: NativeUInt);
나에게 가장 어려운 부분은 다음과 같습니다.
lpData
포인터 로 변환하는 방법을 모르겠습니다 .
변수 Destination
유형은 PByte
입니까?
길이를 얻는 방법?
대상 값을 n
( Dword
유형 값) 으로 변환하는 방법은 무엇입니까?
동적 배열은 이미 포인터이므로 다음 코드가 작동합니다.
var
lpData: array of byte;
n : DWord;
begin
lpData := [$0A, $0B, $0C, $0D];
CopyMemory(@n, lpData, SizeOf(n));
Caption := Format('%x', [n]);
참고 lpData
초기화해야한다.
또한 데이터 유형 array of byte;
의 의심스러운 아날로그입니다 C++
. 델파이 고유의 관리 유형입니다. 배열 본문은 저장소로 사용될 수 있지만 전체 사용량은 다를 수 있습니다.
직접 아날로그 LPBYTE
는 Delphi PByte
이며 때로는 PByteArray
편리합니다. 설명 할 가치가 있습니다-어떻게 lpData
채워지 는지 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다