>Hello,
>
>I'm having a problem trying to figure out how to reference objects and object arrays when you are using variables instead of actual names. For example, consider the following procedure. In this situation, I need to (1) check to see if an object exists, and then (2) generate this object if it doesn't exist, and (3) run a procedure using an array that is a property of the newly created object. I'm not sure how to reference the array using a variable, or how to pass the array as reference, since @ doesn't work here. I am only getting the first element of the array.
>
>PROC MYPROC
>
>lParameter lcObjectClass
>Local loObject, loArray
>loOption = "o" + lcObjectClass
>
>
>* Check to see if object exists
>
>IF (TYPE("THIS." + loObject + ".array") = "U")
> THIS.AddObject(loObject, lcObjectClass)
>ENDIF
>
>* Get array reference (is there a better way to do this? This works but seems a little clumsy.)
>
>loArray = "Session." + loObject + ".array"
>loArray = Evaluate(@loArray)
>
>
>This.DoSomething(@loArray) && this does not work, array does not pass by reference
>
>ENDPROC
>
>Thanks for any tips,
>
>Linda Swift
Try defining loArray as loArray[1] in your LOCAL statement. That way it's set up as an array to begin with. Then, your ACOPY should work directly from your object:
lnElementsCopied = ACOPY(Session.loObject.Array, loArray)
At this point, you should be able to DoSomething(@loArray)
Hope this helps,
---J