On Mon, 23 Sep 2013 11:46:54 +0200 (CEST) Michael Van Canneyt <mich...@freepascal.org> wrote:
> > > On Mon, 23 Sep 2013, Zaher Dirkey wrote: > > > > > On Mon, Sep 23, 2013 at 10:02 AM, Michael Van Canneyt > > <mich...@freepascal.org> wrote: > > Var > > C : TBaseObjectClass; > > begin > > C:=TBaseObjectClass(ClassType); > > Result:=C.Create; > > end; > > > > > > Yes, that help me, thanks. > > > > Now about assigning I must repeat it (assign) for every child class copy > > its field members, is there any trick to copy the values like assigning > > record var to another record > > var? > > I know it is kind of strange way :P > > There is no such safe mechanism. Well, actually there is a safe mechanism. You use a record to store the class variables. But it looks clumsily: type TMyClass = class(TPersistent) private type TMyClassVars = record a,b,c: string; end; private F: TMyClassVars; public procedure Assign(Source: TPersistent); property a: string read F.a write F.a; end; procedure TMyClass.Assign(Source: TPersistent); begin F:=TMyClass(Source).F; inherited; end; > The best you can do is make the properties published, and write an RTTI > lookup routine that copies all Published values. > I've done this several times, it works well for most situations. Mattias _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal