E2018 Record, Objekt oder Klassentyp erforderlich (Delphi)
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.