E2018 Type record, object ou class requis (Delphi)

De RAD Studio
Aller à : navigation, rechercher

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

Le compilateur attendait de trouver le nom de type spécifiant un enregistrement, un objet ou une classe mais ne l'a pas trouvé.



  program Produce;

    type
      RecordDesc = class
        ch : Char;
      end;

    var
      pCh : PChar;
      r: RecordDesc;

    procedure A;
    begin
      pCh.ch := 'A';    (* case 1 *)

      with pCh do begin (* case 2 *)
      end;
    end;
  end.


Cette erreur peut avoir deux causes. La première est l'application de '.' à un objet qui n'est pas un enregistrement. La deuxième cause est l'utilisation d'une variable qui est d'un type incorrect dans une instruction WITH.



  program Solve;

    type
      RecordDesc = class
        ch : Char;
      end;

    var
      r: RecordDesc;

    procedure A;
    begin
      r.ch := 'A';    (* case 1 *)

      with r do begin (* case 2 *)
      end;
    end;
  end.

La solution simple pour cette erreur est de toujours vérifier que le '.' et WITH sont tous les deux appliqués uniquement sur les enregistrements, les variables objet ou classe.