On Thu, 29 Jul 1999, Raymond E. Griffith wrote:

> I have been trying to pass a variable which contains an array with no 
> success.
> 
> One button has a handler like this
> 
> on mouseUp
>   put empty into fld "thekeys"
>   put fld "thelist" into xx    -- a 100-line field, 2 items per line
>   repeat with i = 1 to the number of lines of xx
>     repeat with j = 1 to the number of items of line i of xx
>       put item j of line i of xx into tl[i,j]
>     end repeat
>   end repeat
>   put keys(tl) into fld "thekeys"
>   call "getvar" && tl of fld "getit"
> end mouseUp
> 
> The keys() function correctly identifies the parts of the array that are
> filled.
> 
> The call function in the above handler reaches this one (I put the beep in
> to be sure).
> 
> on getvar x
>   beep
>   answer keys(x)
> end getvar
> 
> But x is read as empty. So, why can't I pass associative arrays? I notice I
> can't pass fields either.
> 
> One of the great strengths of Hypercard is its ability to pass fields and
> complex variables. Of course, it doesn't have the ability to do "call"
> statements or even create arrays. Ah, for the best of both ...

You can only pass arrays in handlers called directly, i.e., not using
"send", "call", or "do", all of which evaluate their arguments and so
destroy their "arrayness".  So, you'll either have to put the "getvar"
function in the script of some object in the normal message-passing
hierarchy, or use "insert script" to insert the script of that field
into the hierarchy.
  Regards,
    Scott

> Raymond
> 

********************************************************
Scott Raney  [EMAIL PROTECTED]  http://www.metacard.com
MetaCard: You know, there's an easier way to do that...

Reply via email to