Dépendances de chaînes

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Utilisation des chaînes


Il est parfois nécessaire de convertir des chaînes longues en chaînes à zéro terminal, par exemple si vous utilisez une fonction qui attend un PChar. Si vous devez transtyper une chaîne en PChar, sachez que vous êtes responsable de la durée de vie du PChar résultant. Comme les chaînes longues utilisent le comptage de références, le transtypage d'une chaîne en un PChar augmente de un les dépendances de la chaîne sans augmenter également le compteur de références. Quand le compteur de références atteint zéro, la chaîne est détruite même s'il y a encore des dépendances portant dessus. Le transtypage en PChar disparaît également, et ce alors même que la routine à laquelle vous l'avez transmis l'utilise peut-être encore. Par exemple :

procedure my_func(x: string);
begin
  // faire quelque chose avec x
  some_proc(PChar(x)); // transtype la chaîne en PChar
  // vous devez maintenant garantir que la chaîne existe
  // tant que la procédure some_proc a besoin de l'utiliser
end;

Voir aussi