🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #334788

Re: Jak przechowywać Interfejsy?

#334788
From: Arivald
Date: Thu, 12 Jan 2012 12:29
72 lines
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-mail
References: <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