SizeOf(Variable) ist nicht falsch.
Der Typ und die Variable müssten sowieso gleich groß sein, da die Variable ja den "selben" Typ hätte.
Das sieht mehr wie ein Pointer aus (4 Byte = 32 Bit und 8 Byte = 64 Bit)
z.B. PCopyDataStruct statt TCopyDataStruct
aber auch da wären SizeOf(PCopyDataStruct)
und SizeOf(Variable) // var Variable: PCopyDataStruct;
gleich.
You are right, but for best practice i prefer never to use variable, to avoid situations like the following
Code:
type
PMyRecord = ^TMyRecord;
TMyRecord = record
Buffer: array[0..31] of Byte;
end;
TMyClass = class
public
Rec1: TMyRecord;
Rec2: PMyRecord;
end;
var
C:TMyClass;
begin
Writeln(IntToStr(SizeOf(C.Rec1))); // 32
Writeln(IntToStr(SizeOf(C.Rec2))); // 4 on 32bit, 8 on 64bit
Readln;
end.
This thing will be dangerous or more impactful when TMyRecord is small like 4 or 8 and pass on one platform to fail on the other, can happen when updating legacy code or just redesigning data structures.