Article View: pl.comp.lang.delphi
Article #334907Re: Druga Instancja Interfejsu
From: wloochacz
Date: Tue, 24 Jan 2012 08:42
Date: Tue, 24 Jan 2012 08:42
56 lines
2593 bytes
2593 bytes
W dniu 2012-01-24 09:10, konsul41@wp.pl pisze:
> Delphi XE
>
> Opis:
> Czy da się stworzyć drugą instancję/egzemplarz instniejącego Interfejsu
> mając tylko istniejącą instancję/egzemplarz.
>
> IPitDraw = interface(IObiekt)
> ['{E4FE2E92-7B11-4ABB-BBA6-FBA87BA11387}']
> end;
>
> Tworzę w dll tak
>
> CONST NazwaObiektu = 'Etykieta1';
>
> procedure CIPitDraw(out Obiekt: IPitDraw; out ObiektName : String);
> begin
> Obiekt:=TEtykieta1.Create;
> ObiektName:=NazwaObiektu;
> end;
Po co Ci osobne ObiektName (poza tym - łat a kul name, takie
ingliszpolskie :D)?
Pewnie, żeby używać w TDictionary - tak?
Skoro tak, to dlaczego nie trzymasz ObiektName w IPitDraw??
> procedure ObiektName(out ObiektName : String);
> begin
> ObiektName:=NazwaObiektu;
> end;
>
>
> Biblioteka jest ładowana dynamicznie i uchwyt zapamiętany na liście dlli
> w programie wywołuję CIPitDraw i mam interfejs
>
> Pytanie:
> Czy da się stworzyć drugą instancję/egzemplarz instniejącego Interfejsu
> mając tylko istniejącą instancję/egzemplarz?
[...]?
A dlaczego nie dodasz metody fabrykującej instancję do interfejsu?
IPitDraw = interface(IObiekt)
['{E4FE2E92-7B11-4ABB-BBA6-FBA87BA11387}']
function CreateInstance : IObiekt;
end;
Wtedy każda instancja interjsu może tworzyć nowe instancje samego siebie.
Albo, możesz utworzyć interfejs fabryki który będzie fabrykował
interfejsy...
Czyli oddelegować fabrykowanie do osobnego insterfejsu - Twoja procedura
CIPitDraw jest taką fabryką.
> Czy muszę przeszukiwać listę DLLI i i odpytywać o nazę obsługiwanego
> obiektu i jak obsługuje to tworzyć nowy?
Nie musisz.
--
wloochacz
Technical Details
Message-ID:
<jflqud$3o1$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<4f1e676c$0$1226$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: Druga Instancja Interfejsu Date: Tue, 24 Jan 2012 09:42:43 +0100 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 56 Message-ID: <jflqud$3o1$1@inews.gazeta.pl> References: <4f1e676c$0$1226$65785112@news.neostrada.pl> NNTP-Posting-Host: mainframe.rene.com.pl Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1327394573 3841 193.239.124.200 (24 Jan 2012 08:42:53 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Tue, 24 Jan 2012 08:42:53 +0000 (UTC) X-User: wloochacz In-Reply-To: <4f1e676c$0$1226$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