다음 기능에서 "레코드"유형의 크기를 가져 오려고합니다. 그러나 그것은 작동하지 않는 것 같다Delphi 7에서 포인터가 가리키는 유형의 크기를 가져올 수 있습니까?
function GetDataSize(P : Pointer) : Integer;
begin
Result := SizeOf(P^); // **How to write the code?**
end;
예를 들어, 다음 레코드의 크기는
SampleRecord = record
Age1 : Integer;
Age2 : Integer;
end;
그러나 GetDataSize(@a)
는 항상 (A 물론 SampleRecord 유형의 변수입니다) 1 반환 8 바이트입니다. 어떻게해야합니까?
델파이 프로 시저가 있음을 알게되었습니다 프로 시저 새 (var P : 포인터) 메모리 블록을 할당 할 수있는 포인터는 P가 가리키는 타입의 크기에 해당합니다. 어떻게 크기를 얻을 수 있습니까?
@Rob, 세부 정보 주셔서 감사합니다, 나는 그것이 complier 마술이라고 생각합니다. 나는 또한 왜 "새로운"절차가 없는지 설명한다. – trudger