Nope, it means that its encapsulated (or whatever the word is and how its
spelt) and only revealing stuff that needs to be revealed - and it might
only be in the public section rather than the published section; data hiding
and all that.  One of the three corners to good OO design (hurrah) -
inheritance and polymorphism being the others :o)

A clone is an exact copy, not a partial one.  The assign concept works well
for me.

Nahum.

> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
> wrote on
>
> Nahum
>
> If you need to copy the internals of an object then it would
> reflect badly on your objects design wouldn't it?
>
> Neven
>
> ----- Original Message -----
> From: "Nahum Wild" <[EMAIL PROTECTED]>
> To: "Multiple recipients of list delphi" <[EMAIL PROTECTED]>
> Sent: Friday, October 04, 2002 2:02 PM
> Subject: RE: [DUG]: Copying an Object
>
>
>> The only problem here being that just the published properties will
>> be cloned, no internal state variables.
>>
>> Nahum.
>>
>>> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>>> wrote on
>>>
>>>> The term for this is "cloning" an object.
>>>>
>>>> There is no built in way of doing this in Delphi, and there are
>>>> issues involved in any cloning operation; e.g. are you interested
>>>> in a shallow clone (just the one object), or a deep clone (your one
>>>> object, and all objects to which it refers)?
>>>>
>>>> Probably a google newsgroup search on Delphi+cloning+objects might
>>>> give you a few ideas on how to progress...
>>>
>>> If your object inherits from TComponent the following code will
>>> clone a component. I have used it to clone TButtons and few other
>>> simple visual components successfully.
>>>
>>>
>>> unit Cloner;
>>>
>>> interface
>>>
>>> uses
>>>   SysUtils, Classes, Controls;
>>>
>>> function Replicate(C: TComponent): TComponent;
>>>
>>> implementation
>>>
>>> procedure CloneComponent(C1: TComponent; C2: TComponent); //
>>> // This procedure clones the properties of C1 and writes them to C2.
>>> // C1 and C2 must be of the same type.  Use it for components that
>>> do // not have an Assign method. //
>>> var
>>>   theStream: TMemoryStream;
>>>   tmpS:      string;
>>> begin
>>>   if C1.ClassType <> C2.ClassType then
>>>     raise EComponentError.Create('Object types are incompatible');
>>>
>>>   if C1 is TControl then
>>>     TControl(C2).Parent := TWinControl(C1).Parent;
>>>
>>>   theStream := TMemoryStream.Create; // Create the memory stream.
>>>
>>>   with theStream do try
>>>     tmpS    := C1.Name;
>>>     C1.Name := EmptyStr;
>>>     WriteComponent(C1);        // Write C1 properties to stream
>>>     C1.Name := tmpS; Seek(0, soFromBeginning);  // Position to
>>>     beginning of stream. ReadComponent(C2);         // read
>>>     properties from stream into C2   finally Free;
>>> // IAC, free stream.   end; end;
>>>
>>> function Replicate(C: TComponent): TComponent;
>>> //
>>> // This function "replicates" component C and returns
>>> // a new component whose type and properties match
>>> // those of C.
>>> //
>>> begin
>>>   Result := TComponentClass(C.ClassType).Create(C.Owner); // Create
>>>   component } CloneComponent(C, Result);
>>> // Clone it } end;
>>>
>>> end.
>>>
>>> --------------------------------------------------------------
>>> -------------
>>>     New Zealand Delphi Users group - Delphi List -
>>> [EMAIL PROTECTED]
>>>                   Website: http://www.delphi.org.nz
>>> To UnSub, send email to: [EMAIL PROTECTED]
>>> with body of "unsubscribe delphi"
>>> Web Archive at:
http://www.mail-archive.com/delphi%40delphi.org.nz/
>
>
> --------------------------------------------------------------------------
>     - New Zealand Delphi Users group - Delphi List -
>                   [EMAIL PROTECTED] Website:
> http://www.delphi.org.nz To UnSub, send email to:
> [EMAIL PROTECTED] with body of "unsubscribe delphi"
> Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/
>

---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED]
with body of "unsubscribe delphi"
Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/


---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED] 
with body of "unsubscribe delphi"
Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/

Reply via email to