Try using WDDX to serialize, then de-serialize the struct. It might work out
fine going that way.
Alan McCollough
Web Programmer
Alaska Native Medical Center
> -----Original Message-----
> From: Fred T. Sanders [SMTP:[EMAIL PROTECTED]]
> Sent: Monday, August 07, 2000 3:14 PM
> To: [EMAIL PROTECTED]
> Subject: Re: Locking & Request Scoped Variables (was RE: Global
> Variables)
>
> Well yes, but Duplicate() is a 4.5.1 undocumented function that they put
> there for Spectra. I'm not even sure 4.5.1 pro has it, but enterprise
> does.
> Otherwise yes you are correct Structcopy() only copies the first level and
> creates pointers to the rest. However for just using it to create
> pointers
> to Application variables, its good enough. After all we are only using
> them
> to read not write.
>
> Fred
>
> ----- Original Message -----
> From: "Chris Bartley" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Monday, August 07, 2000 12:26 PM
> Subject: RE: Locking & Request Scoped Variables (was RE: Global Variables)
>
>
> Alas, even StructCopy() is not enough. Use Duplicate() instead (CF4.5
> only). StructCopy() only does a shallow copy. Try the following code (3
> files) and see what happens to critters.mammals.dogs:
>
> --------------------------------------------------------------------------
> --
> --------------
> - StructTest1.cfm
> --------------------------------------------------------------------------
> --
> --------------
> <html>
> <head>
> <title>Copying Structs with StructCopy()</title>
> </head>
> <body>
> <cfscript>
> critters = StructNew();
> critters.description = "This struct holds all the critters.";
>
> critters.mammals = StructNew();
> critters.insects = StructNew();
> critters.marsupials = StructNew();
>
> critters.mammals.description = "This struct holds all the mammals.";
> critters.mammals.cow = "I say mooo.";
> critters.mammals.cat = "I say meow.";
> critters.mammals.dogs = StructNew();
> critters.mammals.dogs.description = "This struct holds all the dogs.";
> critters.mammals.dogs.greyhound = "I'm fast.";
> critters.mammals.dogs.droopy = "I'm slow.";
>
> critters.insects.description = "This struct holds all the insects.";
> critters.insects.spider = "I eat other bugs by catching them in my web.";
> critters.insects.cockroach = "I gross people out.";
> critters.insects.ant = "I'm cool.";
>
> critters.marsupials.description = "This struct holds all the marsupials.";
> critters.marsupials.kangaroo = "I can jump really freakin far.";
> critters.marsupials.koala = "I like eucalyptus.";
> </cfscript>
> <cfset crittersCopy = StructCopy(critters)>
>
> <table border="1" cellpadding="3" cellspacing="0">
> <tr>
> <td colspan="2" align="center"><b>Copying Structs with
> <code>StructCopy()</code></b></td>
> </tr>
> <tr>
> <td align="center"><b>Critters</b></td>
> <td align="center"><b>Critters Copy</b></td>
> </tr>
> <tr valign="top">
> <td><cfmodule template="printStructTree.cfm" theStruct="#critters#"
> theStructName="Critters"></td>
> <td><cfmodule template="printStructTree.cfm" theStruct="#crittersCopy#"
> theStructName="Critters Copy"></td>
> </tr>
> <tr>
> <td colspan="2" align="center">
> <b>Modify critters.mammals.dogs...</code></b>
> <cfset critters.mammals.dogs = "dogs is gone!">
> </td>
> </tr>
> <tr valign="top">
> <td><cfmodule template="printStructTree.cfm" theStruct="#critters#"
> theStructName="Critters"></td>
> <td><cfmodule template="printStructTree.cfm" theStruct="#crittersCopy#"
> theStructName="Critters Copy"></td>
> </tr>
> </table>
> </body>
> </html>
> --------------------------------------------------------------------------
> --
> --------------
> - StructTest2.cfm
> --------------------------------------------------------------------------
> --
> --------------
> <html>
> <head>
> <title>Copying Structs with Duplicate()</title>
> </head>
> <body>
> <cfscript>
> critters = StructNew();
> critters.description = "This struct holds all the critters.";
>
> critters.mammals = StructNew();
> critters.insects = StructNew();
> critters.marsupials = StructNew();
>
> critters.mammals.description = "This struct holds all the mammals.";
> critters.mammals.cow = "I say mooo.";
> critters.mammals.cat = "I say meow.";
> critters.mammals.dogs = StructNew();
> critters.mammals.dogs.description = "This struct holds all the dogs.";
> critters.mammals.dogs.greyhound = "I'm fast.";
> critters.mammals.dogs.droopy = "I'm slow.";
>
> critters.insects.description = "This struct holds all the insects.";
> critters.insects.spider = "I eat other bugs by catching them in my web.";
> critters.insects.cockroach = "I gross people out.";
> critters.insects.ant = "I'm cool.";
>
> critters.marsupials.description = "This struct holds all the marsupials.";
> critters.marsupials.kangaroo = "I can jump really freakin far.";
> critters.marsupials.koala = "I like eucalyptus.";
> </cfscript>
> <cfset crittersCopy = Duplicate(critters)>
>
> <table border="1" cellpadding="3" cellspacing="0">
> <tr>
> <td colspan="2" align="center"><b>Copying Structs with
> <code>Duplicate()</code></b></td>
> </tr>
> <tr>
> <td align="center"><b>Critters</b></td>
> <td align="center"><b>Critters Copy</b></td>
> </tr>
> <tr valign="top">
> <td><cfmodule template="printStructTree.cfm" theStruct="#critters#"
> theStructName="Critters"></td>
> <td><cfmodule template="printStructTree.cfm" theStruct="#crittersCopy#"
> theStructName="Critters Copy"></td>
> </tr>
> <tr>
> <td colspan="2" align="center">
> <b>Modify critters.mammals.dogs...</code></b>
> <cfset critters.mammals.dogs = "dogs is gone!">
> </td>
> </tr>
> <tr valign="top">
> <td><cfmodule template="printStructTree.cfm" theStruct="#critters#"
> theStructName="Critters"></td>
> <td><cfmodule template="printStructTree.cfm" theStruct="#crittersCopy#"
> theStructName="Critters Copy"></td>
> </tr>
> </table>
> </body>
> </html>
>
> --------------------------------------------------------------------------
> --
> --------------
> - printStructTree.cfm
> --------------------------------------------------------------------------
> --
> --------------
> <cfparam name="attributes.theStruct" default="">
> <cfparam name="attributes.theStructName" default="No Struct Given">
>
> <cfoutput>#attributes.theStructName#</cfoutput>
> <cfif (IsStruct(attributes.theStruct))>
> <ul>
> <cfloop collection="#attributes.theStruct#" item="key">
> <li>
> <cfif IsStruct(attributes.theStruct[key])>
> <cfmodule template="printStructTree.cfm"
> theStruct="#attributes.theStruct[key]#" theStructName="#key#">
> <cfelse>
> <cfoutput>#key# = #attributes.theStruct[key]#</cfoutput>
> </cfif>
> </li>
> </cfloop>
> </ul>
> </cfif>
>
> --------------------------------------------------------------------------
> --
> --------------
> At 5:43 PM +0200 8/7/00, BOROVOY Noam wrote:
> >Old Chinese saying: "If all else fails read the @#$% manual"
> >
> >' ... Use the StructCopy function when you want to create a physical copy
> of
> >a structure. You can also use assignment to create a copy by reference. '
> >
> >If you want thread safe variables, and you want to copy a complex
> variable
> >query / structure. A simple assignment is NOT enough! You must use
> >StructCopy.
> >
> >HTH,
> >Noam
> >
> > ----------
> > From: [EMAIL PROTECTED] [SMTP:[EMAIL PROTECTED]]
> > Sent: Monday, 07 August 2000 17:08
> > To: [EMAIL PROTECTED]
> > Subject: Locking & Request Scoped Variables (was RE: Global
> >Variables)
> >
> > Picking up on something Fred Sanders said in his reply:
> >
> > "...The request scope is a global thread safe variable scope.
> > To get out of having to do locks I often make request. scoped
> >pointers to
> > whatever application scoped variables I've set. "
> >
> > I seem to remember Dave Watts mentioning on the CF-Talk list that
> >pointers
> > to shared memory variable scopes (ie. session, application, etc...)
> >are no
> > better from a locking perspective than the direct call to them. Did
> >I
> > misunderstand? Anyone care to clarify this request. pointer issue?
> >
> > Thanks,
> >
> > Chris
> >
> >
> >
> >-------------------------------------------------------------------------
> --
> -
> >--
> > To Unsubscribe visit
> >http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/fusebox
> or
> >send a message to [EMAIL PROTECTED] with 'unsubscribe' in
> >the body.
> >-------------------------------------------------------------------------
> --
> ---
> >To Unsubscribe visit
> http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/fusebox or
> send a message to [EMAIL PROTECTED] with 'unsubscribe' in
> the body.
>
> --------------------------------------------------------------------------
> --
> --
> To Unsubscribe visit
> http://www.houseoffusion.com/index.cfm?sidebar=sts&body=sts/fusebox or
> send
> a message to [EMAIL PROTECTED] with 'unsubscribe' in the
> body.
>
>
> --------------------------------------------------------------------------
> ----
> To Unsubscribe visit
> http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/fusebox or
> send a message to [EMAIL PROTECTED] with 'unsubscribe' in
> the body.
------------------------------------------------------------------------------
To Unsubscribe visit
http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/fusebox or send a
message to [EMAIL PROTECTED] with 'unsubscribe' in the body.