У вас есть класс, реализующий IField.IFieldMethod
с использованием метода abstract virtual
, и вы проигнорировали Constructing instance of <TType> containing abstract method <MethodName>
.
Вот короткая демонстрационная программа с консольным кодом, демонстрирующая вашу ошибку.Тот факт, что вы звоните IFieldMethod
с использованием (Item[i] as IField).IFieldMethod
, не дает никакой новой информации, он только скрывает причину проблемы.Сохраните ссылку интерфейса типа IField
на локальную переменную, и вы получите мой код:
program Project23;
{$APPTYPE CONSOLE}
uses
SysUtils,
Classes;
type IDummyIntf = interface
procedure DoStuff;
end;
type TDummyImp = class(TInterfacedObject, IDummyIntf)
procedure DoStuff;virtual;abstract; // TDummyImp implements IDummyIntf.DoStuff using a VIRTUAL ABSTRACT method.
end;
var X: IDummyIntf;
begin
X := TDummyImp.Create; // <-- Warning at this line, Constructing instance of TDummyImp containing abstract method TDummyImp.DoStuff
X.DoStuff; // This raises EAbstractError because TDummyImp doesn't actually implement DoStuff
ReadLn;
end.