views:

30

answers:

2

I have the following ASP classic function:

function get_children(n)
  dim local_array
  dim parent
  dim path
  if n.hasChildNodes() then
    for each child in n.childNodes
      local_array = array_merge(local_array, get_children(child))
    next
  else
    set parent = n.parentNode
    while isobject(parent)
      path = parent.nodeName & "/" & path
      set parent = parent.parentNode
    wend
    path = path & "/" & get_attr(n, "file")
    set_attr n, "path", path
    local_array = Array(0)
    set local_array(0) = n
  end if
  get_children = local_array
end function

Running this over an XML node (coming from a Microsoft.XMLDOM object), I get the error Object required: 'parent' on the line

path = parent.nodeName & "/" & path

and I can't understand why. I'm checking isobject. Can anyone explain what the runtime is complaining about, and why?

A: 

I'm not 100% sure, but maybe you should use something with/instead if IsObject? I suggest to try IsEmpty(), IsNull() or Is Nothing. The latter is used like this:

If Not (myObject Is Nothing)
Andrew Bezzub
+2  A: 

When there is no more parent nodes, you will get a null value back, i.e. Nothing. However, Nothing is the "null object", so it's also an object. The value of IsObject(Nothing) is True.

Check for Nothing instead of checking if the variable contains an object:

while not (parent is Nothing)
Guffa