QSA-interest Archive, October 2005
setting variables in if-blocks -> undefined variable-type
Message 1 in thread
Hi
I tried to get the following script working but it stops with the error:
"TypeError. Undefined member function 'AddActor' for object 'undefined' of
type 'Undefined'"
That happens because the variable 'renderer' gets defined in the contents of
the function but gets set in an if-block.
Something like this would work in C++. What can I do to make it work in
QScript, too ?
Greetings
Jens
function getRenderer()
{
var renderer;
var renReg;
// search for a registered vtkRenderer
objArray =
Application.currentView.getRegisteredObjectArray("QVSWrapper_vtkRenderer");
if( objArray.length > 0 )
{
if( vtkRenderer.canConvert( objArray[0] ))
{
var renderer = vtkRenderer.convert( objArray[0] );
renReg = renderer.QVSObjectId();
}
}
// if no renderer got found create a new one and register it
if( renderer == undefined )
{
var renderer = new vtkRenderer();
renReg =
Application.View2D_3.registerObject( renderer.as_QVSObject() );
debug("new Renderer");
}
renderer.SetBackground(0.1, 0.2, 0.3);
}
Message 2 in thread
Hi Jens,
It looks like you are re-declaring "renderer" inside the if block. By
doing "var renderer" you are declaring a local variable inside the if
block with the same name, thus shadowing the previous declaration.
Instead of this:
> var renderer = vtkRenderer.convert( objArray[0] );
Do this:
> renderer = vtkRenderer.convert( objArray[0] );
Then it should assign the value to the previously-declared "renderer"
variable.
Joel
On Oct 10, 2005, at 3:31 PM, Jens wrote:
> Hi
> I tried to get the following script working but it stops with the
> error:
> "TypeError. Undefined member function 'AddActor' for object
> 'undefined' of
> type 'Undefined'"
> That happens because the variable 'renderer' gets defined in the
> contents of
> the function but gets set in an if-block.
> Something like this would work in C++. What can I do to make it work in
> QScript, too ?
>
> Greetings
> Jens
>
> function getRenderer()
> {
> var renderer;
> var renReg;
>
> // search for a registered vtkRenderer
> objArray =
> Application.currentView.getRegisteredObjectArray("QVSWrapper_vtkRendere
> r");
> if( objArray.length > 0 )
> {
> if( vtkRenderer.canConvert( objArray[0] ))
> {
> var renderer = vtkRenderer.convert( objArray[0] );
> renReg = renderer.QVSObjectId();
> }
> }
> // if no renderer got found create a new one and register it
> if( renderer == undefined )
> {
> var renderer = new vtkRenderer();
> renReg =
> Application.View2D_3.registerObject( renderer.as_QVSObject() );
> debug("new Renderer");
> }
>
> renderer.SetBackground(0.1, 0.2, 0.3);
> }
>
> To unsubscribe - send "unsubscribe" in the body to
> qsa-interest-request@xxxxxxxxxxxxx
Message 3 in thread
Jens wrote:
> Hi
> I tried to get the following script working but it stops with the error:
> "TypeError. Undefined member function 'AddActor' for object 'undefined' of
> type 'Undefined'"
> That happens because the variable 'renderer' gets defined in the contents of
> the function but gets set in an if-block.
> Something like this would work in C++. What can I do to make it work in
> QScript, too ?
>
> Greetings
> Jens
>
> function getRenderer()
> {
> var renderer;
...
> if( objArray.length > 0 )
> {
> if( vtkRenderer.canConvert( objArray[0] ))
> {
> var renderer = vtkRenderer.convert( objArray[0] );
Hi Jens,
By redeclaring renderer in the inner if you get shadowing of the
renderer variable in the getRenderer() function. A C++ compiler would
probably warn you given the right verbosity level ;-)
-
Gunnar
Message 4 in thread
Am Dienstag, 11. Oktober 2005 09:21 schrieb Gunnar Sletta:
> Jens wrote:
> > Hi
> > I tried to get the following script working but it stops with the error:
> > "TypeError. Undefined member function 'AddActor' for object 'undefined'
> > of type 'Undefined'"
> > That happens because the variable 'renderer' gets defined in the contents
> > of the function but gets set in an if-block.
> > Something like this would work in C++. What can I do to make it work in
> > QScript, too ?
> >
> > Greetings
> > Jens
> >
> > function getRenderer()
> > {
> > var renderer;
>
> ...
>
> > if( objArray.length > 0 )
> > {
> > if( vtkRenderer.canConvert( objArray[0] ))
> > {
> > var renderer = vtkRenderer.convert( objArray[0] );
>
> Hi Jens,
>
> By redeclaring renderer in the inner if you get shadowing of the
> renderer variable in the getRenderer() function. A C++ compiler would
> probably warn you given the right verbosity level ;-)
Sorry ... of course that´s right. It works fine now.
Greetings
Jens
> -
> Gunnar
>
> To unsubscribe - send "unsubscribe" in the body to
> qsa-interest-request@xxxxxxxxxxxxx