|
| Klone objekt? Fra : Thomas Holmgren |
Dato : 26-03-04 10:48 |
|
Hej alle!
Hvordan kloner jeg et objekt i Delphi? Jeg savner en ækvivalent til
javas java.lang.Object.Clone().
God weekend! :)
--
Mvh.
Thomas Holmgren
| |
Henry (26-03-2004)
| Kommentar Fra : Henry |
Dato : 26-03-04 23:03 |
|
> Hvordan kloner jeg et objekt i Delphi? Jeg savner en ækvivalent til
> javas java.lang.Object.Clone().
>
Jeg kender ikke javas clone metode, men hvis du mener kopiere et object over
i et andet object, så er det ikke en standard funktion, i delphi indeholder
et object ofte pointers til andre objecter som igen kan indeholde pointers.
Den eneste måde er at lave en klasse selv som har en .clone metode der
kopiere alle properties fra Object a.propertyX til Object b.propertyX
mvh
Henry
| |
David Konrad (27-03-2004)
| Kommentar Fra : David Konrad |
Dato : 27-03-04 01:01 |
|
"Henry" <henry@nomail.com> wrote in message
news:4064a896$0$472$edfadb0f@dread14.news.tele.dk...
> > Hvordan kloner jeg et objekt i Delphi? Jeg savner en ækvivalent til
> > javas java.lang.Object.Clone().
> >
>
> Jeg kender ikke javas clone metode, men hvis du mener kopiere et object
over
> i et andet object, så er det ikke en standard funktion, i delphi
indeholder
> et object ofte pointers til andre objecter som igen kan indeholde
pointers.
> Den eneste måde er at lave en klasse selv som har en .clone metode der
> kopiere alle properties fra Object a.propertyX til Object b.propertyX
Ja - og hvorfor sætte folk i gang med at lave dét gratis, som man får løn på
en virksomhed for at producere? Det er jo ikke svært, men bare kedeligt.
| |
Christian Iversen (27-03-2004)
| Kommentar Fra : Christian Iversen |
Dato : 27-03-04 05:09 |
|
Thomas Holmgren wrote:
> Hej alle!
>
> Hvordan kloner jeg et objekt i Delphi? Jeg savner en ækvivalent til
> javas java.lang.Object.Clone().
Flere objekter understøtter assign(), så du kan eksempelvis bruge:
Var
A, B : TStringList;
Begin
// konstruer listerne
A := TStringList.Create;
B := TStringList.Create;
A.Add('foo');
A.Add('bar');
B.Assign(A); {eller: A.AssignTo(B);}
// Nu er de ens.
// "gør noget med dem"
// vi er færdige
B.Free;
A.Free;
End;
--
M.V.H
Christian Iversen
| |
David Konrad (27-03-2004)
| Kommentar Fra : David Konrad |
Dato : 27-03-04 19:52 |
|
"Christian Iversen" <chrivers@iversen-net.dk> wrote in message
news:c42unt$1nq7$1@news.cybercity.dk...
> Thomas Holmgren wrote:
>
> > Hej alle!
> >
> > Hvordan kloner jeg et objekt i Delphi? Jeg savner en ækvivalent til
> > javas java.lang.Object.Clone().
>
> Flere objekter understøtter assign(), så du kan eksempelvis bruge:
>
> Var
> A, B : TStringList;
> Begin
> // konstruer listerne
> A := TStringList.Create;
> B := TStringList.Create;
> A.Add('foo');
> A.Add('bar');
> B.Assign(A); {eller: A.AssignTo(B);}
> // Nu er de ens.
>
> // "gør noget med dem"
>
> // vi er færdige
> B.Free;
> A.Free;
> End;
Assign - i det omfang det fungerer - kopierer blot værdier fra ét object til
et andet. En J2EE clone() laver en regulær kopi, dvs opretter f.eks et nyt
TStrings-object hvor et objekt's property er at typen TStrings osv. Assign
laver tildeling - ikke kopier. Skal man lave en clone-ækvivalent i Delphi er
den nemmeste metode en funktion, der traverserer et givet objekts properties
igennem via RTTI, og returnerer et nyt objekt af samme type med nye
instanser af hvert enkelt af dette objekts properties.
| |
|
|