Re: help

new topic     » goto parent     » topic index » view thread      » older message » newer message

now that you've explained the bug it's obvious. i couldn't see the forrest
for the trees...

thanks. Derek

george

----- Original Message -----
From: "Derek Parnell" <ddparnell at bigpond.com>
To: "EUforum" <EUforum at topica.com>
Subject: Re: help


>
>
> ----- Original Message -----
> From: "George Walters" <gwalters at sc.rr.com>
> To: "EUforum" <EUforum at topica.com>
> Sent: Tuesday, July 22, 2003 10:43 PM
> Subject: help
>
>
> > I'm moving my programs to the new win32 and having some success but I
don't
> > know where to look for this trap. My keypress's are working fine but
when I
> > click a button it blows up with this message... which is a long way away
> > from my program. Here's the code:
> >
> > procedure clickButton(integer self, integer eventId, sequence arg)
> >  for i = 1 to len(btn) do
> >   if self = btn[i] then
> >    call_proc(buttonProcess[i],{})
> >    exit
> >   end if
> >  end for
> > end procedure
> >
> >  setHandler(btn, w32HClick, routine_id("clickButton"))
> >
>
> As you indicate in a subsequent email, buttonProcess contains a list of
procedure names. That is, each element in buttonProcess is a NAME of a
routine in your program. Thus the line ...
>
>    call_proc(buttonProcess[i],{})
>
> is running call_proc() giving the first parameter a routine name. However,
call_proc()'s first parameter must be a routine_id and not a routine name.
>
> The easiest fix for you is to change this line to ...
>
>    call_proc(routine_id(buttonProcess[i]),{})
>
> but that is also the slowest executing fix. You might like to consider
this fix... Leave the call_proc() line as it is but change the
initialization of buttonProcess...
>
>    rightButtonProcess = {routine_id("processChange"),
>                          routine_id("processSave"),
>                          routine_id("processAbort")}
> etc ....
>
> An even better fix (in terms of execution speed) is to do this...Change
the initialization as above and change the code in clickButton() to ...
>
>
>  procedure clickButton(integer self, integer eventId, sequence arg)
>   int pos
>   pos = find(self, btn)
>   if pos != 0 then
>     call_proc(buttonProcess[pos],{})
>   end if
>  end procedure
>
> Though I still prefer the original method I sent you.
>
> --
> Derek
>
>
>
> TOPICA - Start your own email discussion group. FREE!
>
>

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu