Einzelnen Beitrag anzeigen

Kas Ob.
Online

Registriert seit: 3. Sep 2023
347 Beiträge
 
#13

AW: Delphi 12 und SendMessage

  Alt 20. Feb 2024, 09:19
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.
Kas
  Mit Zitat antworten Zitat