type
IMyInterface = interface
['{ED93FF5F-C09B-4DC7-9AA1-A826ABC9EFA2}']
procedure Handle;
end;
TMyObject = class(TInterfacedObject, IMyInterface, ...) // -------
protected
procedure _Handle;
procedure IMyInterface.Handle = _Handle;
end;
procedure TMyObject._Handle;
begin
end;
На помеченной строке валится с E2291 Missing implementation of interface method IMyInterface.Handle.Вопрос: как такое может быть?
P.S. Других ошибок в логе нет.
Ответ будет опубликован через две недели.
Ответ.
У меня не валится. Компилится и работает. Ответ: кривой компилятор)
ОтветитьУдалитьDelphi 10, Delphi XE - компилирует без ошибок
ОтветитьУдалитьНаверное валится, потому что - Missing implementation of interface method IMyInterface.Handle
ОтветитьУдалитьТак в блоке protected же. Не из-за этого разве?
ОтветитьУдалитьТакое будет, если вместо ... поставить интерфейс, унаследованный от IMyInterface.
ОтветитьУдалитьРеализацию интерфейса можно размещать в protected.
ОтветитьУдалитьДругое дело, что оно компилируется. Может стоило уточнить на какой версии мы получим E2291. Далеко не у всех есть последняя BDS или Delphi.
Или в этом и подвох?
Вчера тут был мой ответ, но сегодня я его не вижу. Баг или специально убрали?
ОтветитьУдалитьПопал в спам. Восстановил.
Удалить