Pointers

A Noter

Remplir une variable de 0
  ZeroMemory(@vVar,SizeOf(vVar));
Length et SizeOf

Souvent dans les appels aux Api Windows on utilise un Buffer.
sous la forme adresse/longueur comme :

APIWindows(AHandle, pchar(vBuffer), length(vBuffer));

On serait tenté d'avoir la taille du Buffer avec sizeof (comme en C) mais il faut utiliser length

   SetLength(vBuff,24 ); 
   vTestS:=sizeof(vBuff);   // = 8 (la taille du pointeur probablement)
   vTestL:=length(vBuff);   // = 24 (la taille réelle du buffer)

Changement de type grâce aux pointeurs

function IToQ(val: int64): QWord;
var
   pQ: PQWord;
begin
   pQ     := @val;
   Result := pQ^;
end;
Pour changer de type on peut utiliser aussi absolute
Voir ici : https://wiki.freepascal.org/Absolute

Transmettre un Objet via un Int64

Int64 -> TObject

var
  vI:int64;
  vO: TObject;
begin
  vO:=TObject(pointer(vI));
end;

TObject -> Int64

var
  vI:int64;
  vO: TObject;
begin
  vI:=ptrint(vO);
end;

Sources

Vous pourriez laisser un commentaire si vous étiez connecté.