Article View: pl.comp.lang.delphi
Article #334777Re: Jak przechowywać Interfejsy?
From: wloochacz
Date: Thu, 12 Jan 2012 10:37
Date: Thu, 12 Jan 2012 10:37
59 lines
2865 bytes
2865 bytes
W dniu 2012-01-12 11:00, konsul41@wp.pl pisze:
> Delphi XE
>
> Robię coś w rodzaju rozszeżenia możliwości
To jest tzw. Interface Proxy
http://en.wikipedia.org/wiki/Proxy_pattern
> type
> IObiekt = interface;
>
> //interfejs przechowujący zarejestrowane kontrolki - lista
> zarejestrowanych kontolek
> IListaObiektow = interface
> function GetIObiekt(index : Integer): IObiekt;
> function FindIObiekt(GUID : TGUID): IObiekt; overload;
> function FindIObiekt(GUID : String): IObiekt; overload;
> function AddIObiekt(obiekt : IObiekt):boolean;
> procedure DeleteIObiekt(GUID : TGUID); overload;
> procedure DeleteIObiekt(GUID : String); overload;
> property Interfejs[index : Integer]: IObiekt read GetIObiekt;
> end;
>
>
> //Interfejs podstawowy dla wszystkich obiektów kontrolek
> IObiekt = interface
> ['{B53C6B06-9968-4170-8A2C-977A4ABEF423}']
> function GetLeft(): Integer;
> ...
> property Typ : String read GetTyp write SetTyp;
> end;
>
>
>
> TListaObiektow= class(TComponent,IListaObiektow)
Dlaczego TComponent a nie TIntefeacedObject lub TPersistentInterfaced?
Nie będziesz miał tu RefCountingu i wycieki...
No chyba, ze sam se zaimplementujesz RefCounting.
>
> private
> Interfejsy : array of IObiekt;
> public
> constructor Create(AOwner: TComponent); Override;
> function GetIObiekt(index : Integer): IObiekt;
> function FindIObiekt(GUID : TGUID): IObiekt; overload;
> function FindIObiekt(GUID : String): IObiekt; overload;
> function AddIObiekt(obiekt : IObiekt):boolean;
> procedure DeleteIObiekt(GUID : TGUID); overload;
> procedure DeleteIObiekt(GUID : String); overload;
> end;
> Pytanie czy w ten sposób można przechowywać interfejsy?
Można, ale po co komplikować?
http://stackoverflow.com/questions/2959163/how-to-store-and-locate-multiple-interface-types-within-a-delphi-tinterfacelist
A jak masz generyki pod ręką to można skorzystać np. z TDictionary...
--
wloochacz
Technical Details
Message-ID:
<jemd56$lt5$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<4f0eaf3a$0$1258$65785112@news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: wloochacz <wloochacz@nospam.nie.gmail.com> Newsgroups: pl.comp.lang.delphi Subject: Re: Jak przechowywać Interfejsy? Date: Thu, 12 Jan 2012 11:37:18 +0100 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 59 Message-ID: <jemd56$lt5$1@inews.gazeta.pl> References: <4f0eaf3a$0$1258$65785112@news.neostrada.pl> NNTP-Posting-Host: mainframe.rene.com.pl Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1326364646 22437 193.239.124.200 (12 Jan 2012 10:37:26 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Thu, 12 Jan 2012 10:37:26 +0000 (UTC) X-User: wloochacz In-Reply-To: <4f0eaf3a$0$1258$65785112@news.neostrada.pl> User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0) Gecko/20111222 Thunderbird/9.0.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit