Information générale
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Network:
Windows Server 2012 R2
Virtual environment:
VMWare
You ARE passing by value, but only the object handle (C pointer if you look at it from that perspective).
If you want to "isolate" the object (property values) passed down, you have to make a deep copy/clone, pass that - this will leave the original undisturbed.
NOT the way parameter objects typically work, so rethink your approach at least twice. Can result in multiplying the typical function call overhead (in vfp already relatively large compared to statically typed languages like Java, C# or C++). If you go that way, at LEAST create an object pool for the calling stack parameter objects. Did that once way back to salvage an overPOOPed parameter object passing fwk design already far overspending and missing the targeted speed by a lot ;-))
>Hi all,
>
>This should be fairly "basic" but have never figured it out...I know how to pass a variable or array to a function by reference (by prefacing with @) but in this case I want to pass an object to a method and force it to pass by "value" i.e. make a copy
>
>loSomeObject=CREATE("empty")
>ADDPROPERTY(loSomeObject,"FileName","C:\temp\test.doc")
>
>loFileWhizBang.OutputFile(loSomeObject)
>
>*** and method Outputfile ***
>
>LPARAMETERS toFileObject
>
>* strip the path off for some use
>toFileObject.FileName = JUSTFNAME(toFileObject.FileName)
>
>I *usually* load everything into local vars when doing things like this but trying to "tighten up" some code, I decided to do the alteration on the object property not realizing that it was not a LOCAL copy. So I instead tried to pass the object in a way that forces toFileObject to a local value. Could not figure and help files did not help.
>
>Any way to do it?
>
>Albert
Précédent
Suivant
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement