[fpc-pascal] Clone a instance of object
Frederic Da Vitoria
davitofrg at gmail.com
Mon Sep 23 12:10:41 CEST 2013
2013/9/23 Mattias Gaertner <nc-gaertnma at netcologne.de>
> On Mon, 23 Sep 2013 11:46:54 +0200 (CEST)
> Michael Van Canneyt <michael at freepascal.org> wrote:
>
> >
> >
> > On Mon, 23 Sep 2013, Zaher Dirkey wrote:
> >
> > >
> > > On Mon, Sep 23, 2013 at 10:02 AM, Michael Van Canneyt <
> michael at 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;
>
This wouldn't clone included objects. I mean: if the object to be cloned
contains objects, those included objects should probably be cloned too, but
putting them into a record wouldn't achieve that.
--
Frederic Da Vitoria
(davitof)
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20130923/142d18f1/attachment.html>
More information about the fpc-pascal
mailing list