바이트 배열에서 DWord 크기 데이터를 복사하고 Delphi에서 DWord 유형 값으로 변환하는 방법은 무엇입니까?

미첼 후

아래의 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);

나에게 가장 어려운 부분은 다음과 같습니다.

  1. lpData포인터 로 변환하는 방법을 모르겠습니다 .

  2. 변수 Destination유형은 PByte입니까?

  3. 길이를 얻는 방법?

  4. 대상 값을 n( Dword유형 값) 으로 변환하는 방법은 무엇입니까?

MBO

동적 배열은 이미 포인터이므로 다음 코드가 작동합니다.

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관