Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
prog:lazarus:types:pointer [27/03/2020 14:37]
thierry [A Noter]
prog:lazarus:types:pointer [17/06/2023 17:09] (Version actuelle)
thierry [Changement de type grâce aux pointeurs]
Ligne 9: Ligne 9:
 sous la forme adresse/​longueur comme : sous la forme adresse/​longueur comme :
 <code delphi> <code delphi>
-APIWindows(AHandle,​ pchar(vBuffuer), length(vBuffer));​+APIWindows(AHandle,​ pchar(vBuffer), length(vBuffer));​
 </​code>​ </​code>​
 On serait tenté d'​avoir la taille du Buffer avec ''​sizeof''​ (comme en C) mais il faut utiliser ''​length''​ On serait tenté d'​avoir la taille du Buffer avec ''​sizeof''​ (comme en C) mais il faut utiliser ''​length''​
Ligne 17: Ligne 17:
    ​vTestL:​=length(vBuff); ​  // = 24 (la taille réelle du buffer)    ​vTestL:​=length(vBuff); ​  // = 24 (la taille réelle du buffer)
 </​code>​ </​code>​
 +===== Changement de type grâce aux pointeurs =====
 +<code delphi>
 +function IToQ(val: int64): QWord;
 +var
 +   pQ: PQWord;
 +begin
 +   ​pQ ​    := @val;
 +   ​Result := pQ^;
 +end;
 +
 +</​code>​
 +<note tip>Pour changer de type on peut utiliser aussi ''​absolute''​\\
 +Voir ici : [[https://​wiki.freepascal.org/​Absolute]]</​note>​
 +
 +===== Transmettre un Objet via un Int64 =====
 +==== Int64 -> TObject ====
 +
 +<code delphi>
 +var
 +  vI:int64;
 +  vO: TObject;
 +begin
 +  vO:​=TObject(pointer(vI));​
 +end;
 +</​code>​
 +==== TObject -> Int64 ====
 +<code delphi>
 +var
 +  vI:int64;
 +  vO: TObject;
 +begin
 +  vI:​=ptrint(vO);​
 +end;
 +</​code>​
 +
  
  
Ligne 22: Ligne 57:
   *  [[https://​www.freepascal.org/​docs-html/​ref/​refse15.html]]   *  [[https://​www.freepascal.org/​docs-html/​ref/​refse15.html]]
   * [[https://​wiki.freepascal.org/​Pointer/​fr]]   * [[https://​wiki.freepascal.org/​Pointer/​fr]]
 +  * [[https://​pascal.developpez.com/​cours/​cyberzoide/?​page=pg_Pointers]]
 +  * [[https://​www.tutorialspoint.com/​pascal/​pascal_memory.htm]]