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/