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.
Или в этом и подвох?
Вчера тут был мой ответ, но сегодня я его не вижу. Баг или специально убрали?
ОтветитьУдалитьПопал в спам. Восстановил.
Удалить