Что эквивалентно в Delphi 3 поддержке интерфейсов?
Я поддерживаю приложение, написанное на Delphi 3, и хотел бы внести некоторые улучшения в исходный код, ожидая возможности обновить его до более новой версии Delphi. Одна из вещей, которую я хотел бы использовать, - это интерфейсы. Я знаю, что Delphi 3 уже имеет концепцию интерфейсов, но у меня возникли проблемы с поиском эквивалента
if Supports(ObjectInstance, IMyInterface) then
1 ответ:
Напишите свою собственную реализацию функции "Supports". В Delphi 2009 Вы можете использовать
function MySupports(const Instance: TObject; const IID: TGUID): Boolean; var Temp: IInterface; LUnknown: IUnknown; begin Result:= (Instance <> nil) and ((Instance.GetInterface(IUnknown, LUnknown) and (LUnknown.QueryInterface(IID, Temp) = 0)) or Instance.GetInterface(IID, Temp)); end;
Тест:
procedure TForm4.Button3Click(Sender: TObject); var Obj: TInterfacedObject; begin Obj:= TInterfacedObject.Create; if MySupports(Obj, IUnknown) then ShowMessage('!!'); end;
Надеюсь, что он будет работать в Delphi 3