E2154 Le type '%s' nécessite une finalisation - non autorisé dans enregistrement variant (Delphi)

De RAD Studio
Aller à : navigation, rechercher

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

Certains types sont traités de manière spéciale par le compilateur sur une base interne, c'est-à-dire qu'ils doivent être correctement terminés pour libérer toutes les ressources qu'ils peuvent détenir actuellement. Comme le compilateur ne peut pas déterminer quel type est actuellement stocké dans une section variant d'enregistrement au moment de l'exécution, il est impossible de garantir que ces types de données spéciaux sont correctement terminés.



program Produce;

  type
    Data = record
      case kind:Char of
      'A': (str : String);
    end;

begin
end.

String est un des types nécessitant un traitement spécial du compilateur pour la libération correcte des ressources. Comme tel, il est incorrect d'avoir une String dans une section variant.



program Solve;

  type
    Data = record
      str : String;
    end;

begin
end.

Une première solution à cette erreur est de déplacer toutes les déclarations incriminées hors de la section variant. Une autre solution consiste à utiliser les types pointeur (^String, par exemple) et à gérer la mémoire par vous-même.