comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Idl pointers/widget events
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Idl pointers/widget events [message #12497 is a reply to message #12490] Thu, 13 August 1998 00:00 Go to previous message
mirko_vukovic is currently offline  mirko_vukovic
Messages: 50
Registered: January 1998
Member
In article <1998Aug13.100127@ssrl.slac.stanford.edu>,
dhamilton@ssrl.slac.stanford.edu wrote:
> I am having a pointer problem. I use a pointer to maintain information from a
> widget event handler (as per David Fanning). However, despite the fact that
> the "info" structure which contains the pointer is passed successfully into
the
> container with "set_uvalue", the pointer itself becomes invalid. Is there
some
> problem with IDL for VMS or am I just doing something wrong?
>
> ptr = ptr_new({thing:thing, junk:junk})
> info = {stuff:stuff, ptr:ptr}
> widget_control, tlb, set_uvalue=info, /no_copy
> xmanager, "config", tlb, /no_block
>
> ...
>
> (now, in my event_handler "config_event":)
>
> widget_control, event.top, get_uvalue=info, /no_copy
>
> (at this point, "info" is a completely valid structure, and I can examine
> "info.stuff" to my heart's content. However, an attempt to reference
> "(*info.ptr)" results in crashing my program and an invalid pointer message.)
>
> I have also noticed some inconsistency with this problem between regular IDL
> and IDL/DE, which seems impossible. However, sometimes my code works in the
> development environment, but not in the regular command line. ?
>
> Thanks for your time and help
> Damian Hamilton, SLAC
>

Is your syntax correct. I would think that *(info.ptr) is the correct way
for your setup.

BTW, without knowing the details of your application, I believe that
what you should do is put _everything_ into info, and make info a pointer,
i.e.

> info = ptr_new({stuff:stuff,thing:thing, junk:junk})
> widget_control, tlb, set_uvalue=info

Since you are copying only the pointer address, there is no need to
use the /no_copy. That was the main point of using pointers. They
eliminate the use of /no_copy in widget events, and thus, any changes
you make to info, you do not need to restore it to the widgets uvalue
at the end of the event routine.

mirko

-----== Posted via Deja News, The Leader in Internet Discussion ==-----
http://www.dejanews.com/rg_mkgrp.xp Create Your Own Free Member Forum
[Message index]
 
Read Message
Read Message
Previous Topic: Re: RPC in IDL 5.0
Next Topic: Re: Porting IDL

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Mon Apr 27 16:34:19 PDT 2026

Total time taken to generate the page: 0.95825 seconds