2010-10-25 8 views
2

je la fonction classique ASP suivant:Ne comprennent pas « objet requis » erreur

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 

L'exécution de ce sur un noeud XML (provenant d'un objet Microsoft.XMLDOM), je reçois l'erreur Object required: 'parent' sur la ligne

path = parent.nodeName & "/" & path 

et je ne peux pas comprendre pourquoi. Je vérifie isobject. Quelqu'un peut-il expliquer ce que l'exécution se plaint, et pourquoi?

Répondre

2

Quand il n'y a pas de nœuds parents plus, vous obtiendrez une valeur null retour, à savoir Nothing. Cependant, Nothing est "l'objet nul", donc c'est aussi un objet. La valeur de IsObject(Nothing) est True.

Vérifier Nothing au lieu de vérifier si la variable contient un objet:

while not (parent is Nothing) 
0

Je ne suis pas sûr à 100%, mais peut-être que vous devriez utiliser quelque chose avec/à la place si IsObject? Je suggère d'essayer IsEmpty(), IsNull() ou Is Nothing. Ce dernier est utilisé comme ceci:

If Not (myObject Is Nothing) 
Questions connexes