E2086 Le type '%s' n'est pas encore complètement défini (Delphi)

De RAD Studio
Aller à : navigation, rechercher

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

Cette erreur est produite s'il existe une référence à un type qui vient d'être défini ou s'il existe un type class forward dans une section type et aucune déclaration finale de ce type.



program Produce;

type
  TListEntry = record
    Next: ^TListEntry;                      (*<-- Message d'erreur ici*)
    Data: Integer;
  end;
  TMyClass = class;                         (*<-- Message d'erreur ici*)
  TMyClassRef = class of TMyClass;
  TMyClasss = class                         (*<-- Typo ...*)
    (*...*)
  end;

begin
end.

L'exemple essaie de faire référence à un type record avant d'être complètement défini. De même, à cause d'une erreur de typo, le compilateur ne voit jamais une déclaration complète de TMyClass.



program Solve;

type
  PListEntry = ^TListEntry;
  TListEntry = record
    Next: PListEntry;
    Data: Integer;
  end;
  TMyClass = class;
  TMyClassRef = class of TMyClass;
  TMyClass = class
    (*...*)
  end;

begin
end.

La solution de ce premier problème consiste à introduire une déclaration de type pour un type pointeur auxiliaire. Le deuxième problème est résolu en orthographiant correctement TMyClass.