2012-04-02 2 views
4

Windows 탐색기 "infotips"에서 JPEG 파일에 EXIF ​​정보를 제공하기 위해 쉘 익스텐션을 만들고 x64 DLL을 생성 할 때 Lazarus를 사용하려고합니다.나사로/FPC의 인터페이스 : 다중 상속

Lazarus는 인터페이스로 다중 상속을 지원합니까? 그렇다면 어떻게해야합니까? 예를 들어

, 같은 :

type 
    IInfoTips = interface(IPersistFile, IQueryInfo) 

감사합니다, 마크

답변

0

아니, FPC의 인터페이스는 아직 다중 상속을 지원하지 않습니다.

은 당신이 구현 클래스를시키는됩니다 할 수있는 것은 두 인터페이스에서 상속 :

type 
    TMyInfoTips = class(TInterfacedObject, IPersistFile, IQueryInfo) 

하지만 인터페이스 수준에서, 당신이 원하는대로. 이러한 문은 컴파일되지 않습니다.

단일 인터페이스 유형에서만 "상속"할 수 있습니다.

델파이도 지원하지 않습니다. 오직 Delphi for .Net compiler이 존재하지 않았지만 .Net/C# IR은이 기능을 지원 (그리고 예상)했기 때문에.

또한 Delphi 또는 FPC에서도이 기능을 사용할 수 없습니다.

0

두 인터페이스가 바로 델파이에 같은 무료 파스칼/나사로에 대한 shlobj에 정의되어 있습니다. 델파이 수명 기간 동안 심볼이 변경된 경우 을 사용하면 최신 유닛에 배치 할 수 있지만 큰 백 로그가 있습니다.

이 모든 것이 대체로 델파이와 호환되어야하며 정확히 예상대로 작동하지 않는 것을 설명하면 더 쉽습니다.

추가 아르노 님의 댓글 후 :

없음은하지 않습니다. 객체는 파스칼에서 인터페이스를 구현합니다. 어쨌든 이것을하는 것이 왜 중요한지 나는 정말로 이해하지 못합니다. 물론 그것은 구문 설탕 약간, 그러나 어떤 델파이 스타일의 인터페이스의 IUnknown을 구현하기 때문에, 당신은 다른 인터페이스에 대한 인터페이스를 조회 할 수 있습니다

uses activex; 

var x :IPersistfile; 
    y :IPersistStream; 
begin 
    x.queryinterface(IID_IPersistStream,y); 
end. 
+0

IMHO 질문에 답변하지 않았습니다. 문제는 "FPC가 인터페이스에서 다중 상속을 지원합니까"였습니다. Delphi "unmanaged"는 최신 버전에서도 마찬가지입니다. .NET 용 델파이만이했습니다. FPC가 있습니까? 나는 둘 다 추측하지 않는다. –

+0

너무 오래 전에, 그래서 나는 왜 대답과 질문 불일치인지 모른다. 어쨌든 나는 그 질문을 검토하고 대답했다. –

+0

아직 질문에 답변하지 않으시는 것 같습니다. 인터페이스의 구현이 아니라 인터페이스 정의 자체에 관한 것이 었습니다. 문제는 C# 또는 Java AFAIR에서 가능한 것처럼 인터페이스에 다중 상속이있을 수 있는지 여부입니다. 이러한 인터페이스의 다중 상속은 이점을 가질 수 있습니다. 필자는 필자가 필요로했기 때문에 델파이가 그것을 허용하지 않고, 필자가 놓치지 않았으며 다중 상속이 실제로 델파이 (Delphi for .NET)에 의해 구현되지 않았다는 것을 알고 싶었 기 때문에이 오래된 질문에 왔습니다. . 이 멋진 기능은 여전히 ​​QC 루프에 있습니다. FPC에서는 구현되지 않았습니다 ... –