次の関数で「レコード」タイプのサイズを取得したい。しかし、うまくいかないようです:
function GetDataSize(P : Pointer) : Integer;
begin
Result := SizeOf(P^); // **How to write the code?**
end;
たとえば、次のレコードのサイズは 8 バイトです。
SampleRecord = record
Age1 : Integer;
Age2 : Integer;
end;
ただし、GetDataSize(@a)
常に 1 を返します (a はもちろん SampleRecord 型の変数です)。私は何をすべきか?
Delphi には、 P が指す型のサイズに対応するメモリ ブロックを割り当てることができるプロシージャprocedure New(var P: Pointer)があることに気付きました。どのようにサイズを取得できますか?