E2018 Record, Objekt oder Klassentyp erforderlich (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

Der Compiler erwartete, die Typbezeichnung zu finden, mit dem ein Datensatz, ein Objekt oder eine Klasse festgelegt wurde, konnte jedoch keine Typbezeichnung finden.


  program Produce;

    type
      RecordDesc = class
        ch : Char;
      end;

    var
      pCh : PChar;
      r : RecordDesc;

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

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


Für diesen Fehler gibt es zwei mögliche Ursachen: Im ersten Fall besteht der Fehler in der Anwendung von '.' auf ein Objekt, das kein Datensatz ist. Im zweiten Fall resultiert der Fehler aus der Verwendung einer Variablen, die nicht den richtigen Typ für eine WITH-Anweisung hat.


  program Solve;

    type
      RecordDesc = class
        ch : Char;
      end;

    var
      r : RecordDesc;

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

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

Die einfachste Möglichkeit zur Behebung dieses Fehlers besteht darin, das Symbol "." und WITH nur für Datensatz-, Objekt- und Klassenvariablen zu verwenden.