Go to             Advanced Groups Search    Preferences    Groups     
       Google             Help                                                
       Groups             
         Home [IMG] [IMG] ________________________________ [ Google Search ]  
       Groups [IMG]                                                           

   Groups search result 9 for clone method vb                                 

                                                              Search Result 9 
                                                                              
   From: Larry Serflaten (serflaten@usinternet.com)                           
   Subject: Re: Copying data from one collection to another alters TWO        
   different collections?                                                     
                                                                              
                                          View: Complete Thread (11 articles) 
                                                              Original Format 
                                                                              
   Newsgroups: microsoft.public.vb.general.discussion                         
   Date: 2002-10-18 14:50:04 PST                                              

 "VB Guy" <dont.spam@me.now> wrote
 > I've built the Clone functions... This definately impact performance, but it
 > works. You'll notice the loop to clone each activity object. Just wondering
 > if there is an easy way to copy a collection.

 You are using objects, within objects.  This is precisely why the Collection object
 cannot provide a Clone method for you, it would not know how many levels deep
 you need to go.

 To help performance you can reduced the number of calls on your objects.
 You can do that by providing a means to create an object from passed parameters.
 This would not help your Agent, but it could be used on your Activities class that
 has no embedded objects, or, has only primative types for properties.

 A method I've used more than once is to give the object a Copy property that
 transfers all the properties to and from a string.  Great for saving to a file, and
 in this instance to make an exact copy.

 http://groups.google.com/groups?selm=38776056.1435%40usinternet.com&oe=UTF-8

 (A more detailed example from my VB4 days, using GetSerial and SetSerial
 routines instead of one Copy property)
 http://groups.google.com/groups?selm=3668AEA1.2F2C%40mail.usinternet.com&oe=UTF-8


 Your Agent.Clone might then look like:

 Public Function Clone() As clsAgent
 'Return a cloned copy of the agent
    Dim xActivity As clsActivity
    Dim xClone As clsActivity
    Set Clone = New clsAgent
    Clone.Name = Me.Name
    For Each xActivity In Me.cActivities
       Set xClone = New clsActivitiy
       xClone.Copy = xActivity.Copy
       Clone.cActivities.Add xActivity.Clone
    Next xActivity
    Set xClone = Nothing
    Set xActivity = Nothing
 End Function

 You might then add a special function to your Agent to accept the
 Activity.Copy, and from that add a new activity to the Agent.

 'clsAgent

 Friend Sub AddActivityCopy(ByRef Data as String)
 Dim xAct as clsActivity
   Set xAct = new clsActivity
   xAct.Copy = Data
   cActivities.Add xAct
   Set xAct = Nothing
 End Sub

 Then your Agent.Clone method looks like:

 Public Function Clone() As clsAgent
 'Return a cloned copy of the agent
    Dim xActivity As clsActivity

    Set Clone = New clsAgent
    Clone.Name = Me.Name
    For Each xActivity In Me.cActivities
       Clone.AddActivityCopy xActivity.Copy
    Next xActivity
    Set xActivity = Nothing

 End Function

 This is all done to reduce the amount of code necessary to get the job
 done.  If you execute less code, obviously, it is going to run faster....

 Have fun!
 LFS

     ----------------------------------------------------------------------

   Google Home - Advertise with Us - Business Solutions - Services & Tools -  
                              Jobs, Press, & Help                             

                                 (c)2003 Google