E2155 Le type '%s' nécessite une finalisation - non autorisé dans un type File (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
      name : string;
    end;

  var
    inFile : file of Data;

begin
end.

String est un des types de données nécessitant une finalisation, et comme tel, ils ne peuvent pas être stockés dans un type File.


program Solve;

  type
    Data = record
      name : array[1..25] of Char;
    end;

  var
    inFile : file of Data;

begin
end.

Une solution simple, pour le cas de String, est de re-déclarer le type comme tableau de caractères. Pour les autres cas nécessitant une finalisation, il devient de plus en plus difficile de maintenir une structure de fichier binaire avec des fonctions Pascal standard, telles que 'file of'. Dans ces situations, il est probablement plus simple d'écrire des routines d'E/S de fichier spécialisées.