🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Jak przechowywać Interfejsy?

#334775
From: konsul41
Date: Thu, 12 Jan 2012 10:00
61 lines
2931 bytes
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;


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.
Technical Details
Message-ID: <4f0eaf3a$0$1258$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
From: <konsul41@wp.pl>
Newsgroups: pl.comp.lang.delphi
Subject: Jak przechowywać Interfejsy?
Date: Thu, 12 Jan 2012 11:00:26 +0100
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.5931
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
Lines: 64
Message-ID: <4f0eaf3a$0$1258$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 178.42.213.159
X-Trace: 1326362426 unt-rea-a-02.news.neostrada.pl 1258 178.42.213.159:5775
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit