[ _v!rus_ @ 14.04.2005. 02:09 ] @
Da li neko zna nacin za kreiranje objekata @Runtime kada imam samo naziv klase. Imam naziv klase u stringu, ali kako napraviti instancu u zavisnosti od naziva klase?

Da pojasnim, imam jednu parent klasu i mnogo direktnih potomaka iste. Podaci o instancama (child) klasa se snimaju u stream, koji se kasnije u drugom programu ucitava...
E sad, oba programa koriste iste klase, i u stream-u se snima i naziv klase, ali kada ih drugi program ucitava treba da na osnovu imena klase instancira objekat (i naravno posle instanciranja da ucita odgovarajuca polja, itd)... Znam da bih mogao sa case-om, ali klase se cesto dodaju i oduzimaju sto otezava odrzavanje, a i siguran sam da ima drugi nacin. Cim mogu da prosledjujem (uslovno receno) "nazive" klasa kao parametar funkcijama (koristeci metaklase-"class of" strukturu) skoro sam siguran da moze i ovo.
[ sasas @ 14.04.2005. 07:52 ] @
da li ti ovo šta pomaže?

Code:

unit Unit1;

interface

uses
  Classes, Forms, Dialogs, Controls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

type TSasa = class(TPersistent)
  public
    procedure DoIt;
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TSasa.DoIt;
begin
  ShowMessage('Hello from TSasa');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TSasa((GetClass('TSasa')).Create) do
  begin
    DoIt;
    Free;
  end;
end;

initialization
  RegisterClass(TSasa);
end.



ss.
[ _v!rus_ @ 14.04.2005. 16:07 ] @
@sasas
Thnx, nisam znao za postojanje GetClass f-je.
Jedino sto moram da nasledjujem od TPersistent i sto klasa mora biti registrovana. Ipak sam mislio da postoji neki cisto jezicki nacin za tako nesto, oh well...