Delphi의 인터페이스 유형 변환

1216 단어 Delphi
오늘델파이의 한 프로젝트를 할 때 인터페이스 전환 방면의 동동을 사용했는데 몇 차례의 실패를 거친 후에 마침내 성공했다. 현재 필기를 다음과 같이 기록한다.
 
먼저 인터페이스를 선언합니다.
unit UntPluginIntf;

interface

uses
  MapXLib_TLB;

type
  IMapAware = interface(IInterface)
    function GetMapX():TMap;
  end;

implementation

end.

 
 
그런 다음 MainForm에서 인터페이스를 구현합니다.
 TfrmMain = class(TForm,IUnknown,IMapAware) //           IUnKnown;
  ......
  public
    function GetMapX():TMap;
 end;

implementation

......

function TfrmMain.GetMapX: TMap;
begin
  Result:=MainMap;
end;

 
 
다른 곳에서 형식 변환을 하는 코드:
var
  AMap:TMap;
begin
  AMap := (IMapAware(Self.HostApplication.MainForm as IUnknown)).GetMapX;
  AMap.AboutBox;
end;

참고: Self.HostApplication.MainForm as IUnknown, 이 구절은 먼저 IUnKnown으로 전환한 다음에 우리의 인터페이스로 전환해야 합니다. 저도 모르게 편집 오류가 발생합니다.또한 위의 인터페이스 구현 부분에서도 IUnknown 인터페이스 구현을 동시에 성명해야 합니다. TfrmMain =class(TForm, IUnknown, Imapaware) 그렇지 않으면 실행 기간에 메모리 접근 오류가 발생할 수 있습니다. 기억하세요!

좋은 웹페이지 즐겨찾기