🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Druga Instancja Interfejsu

#334907
From: wloochacz
Date: Tue, 24 Jan 2012 08:42
56 lines
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-mail
References: <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