Article View: pl.comp.lang.delphi
Article #334788Re: Jak przechowywać Interfejsy?
From: Arivald
Date: Thu, 12 Jan 2012 12:29
Date: Thu, 12 Jan 2012 12:29
72 lines
3112 bytes
3112 bytes
W dniu 2012-01-12 11:00, konsul41@wp.pl pisze:
> Delphi XE
>
> Robię coś w rodzaju rozszeżenia możliwości
>
> 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)
>
> 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;
>
Zamiast takiej listy użyj gotowca, TInterfaceList. Ewentualnie go rozszerz.
>
> Pytanie czy w ten sposób można przechowywać interfejsy?
>
> Planuję zrobić to w ten sposób:
> TListaObiektow wczytuje interfejsy z dll , i jeżeli takiego interfejsu
> nie ma to tworzy nowy.
> Następnie Gdy potzebny jest interfejs to TListaObiektow wywołuje
> interfejs udostępniając mu dane, ten je obrabia i wykonuje inne rzeczy
> itd...
> Kończy działanie i czeka na następne wywołanie.
>
> TListaObiektow nie zna całości interfejsu z dll wie tylko że ten jest
> potomkiem IObiekt .
>
>
> Pytanie 2 czy to będzie dobrze działać, kluczowe jest to że
> TListaObiektow ma nie znać implementacji interfejsu w dll i ma tylko
> przechowywać interfejs.
>
>
>
--
Arivald
Technical Details
Message-ID:
<jemjnd$qa2$1@news.dialog.net.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.dialog.net.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.icm.edu.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail From: Arivald <arivald_@AT_interia_DOT_.pl> Newsgroups: pl.comp.lang.delphi Subject: Re: Jak przechowywać Interfejsy? Date: Thu, 12 Jan 2012 13:29:34 +0100 Organization: Dialog Net Lines: 72 Message-ID: <jemjnd$qa2$1@news.dialog.net.pl> References: <4f0eaf3a$0$1258$65785112@news.neostrada.pl> NNTP-Posting-Host: poczta.pgs-soft.com Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1326371373 26946 62.87.249.67 (12 Jan 2012 12:29:33 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Thu, 12 Jan 2012 12:29:33 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20111222 Thunderbird/9.0.1 In-Reply-To: <4f0eaf3a$0$1258$65785112@news.neostrada.pl> X-Stationery: 0.7.7 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit