H2244 L'expression pointeur ne nécessite pas de Initialize/Finalize - nécessite l'opérateur ^ ? (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Messages d'erreur et d'avertissement (Delphi)

Vous avez tenté de finaliser un type Pointer.


program Produce;

  var
    str : String;
    pstr : PString;

begin
  str := 'Sharene';
  pstr := @str;
  Finalize(pstr);  (*note: ne pas utiliser 'str' après cela*)
end.

Dans cet exemple, le pointeur, pstr, est transmis à la procédure Finalize. Cela provoque un conseil puisque les pointeurs ne nécessitent pas de finalisation.


program Solve;


  var
    str : String;
    pstr : PString;

begin
  str := 'Sharene';
  pstr := @str;
  Finalize(pstr^);  (*note: ne pas utiliser 'str' après cela*)
end.

La solution du problème consiste à appliquer l'opérateur ^ au pointeur transmis à la procédure Finalization.