Il giorno 03/lug/05, alle ore 11:08, Vincenzo Antedoro ha scritto:
Salve a tutti.
Per una mia necessità ho creato una classe (oggetto) che ha le
seguenti proprietà:
Nome Classe = DataItems
Proprietà:
Items(0) as DataItems
Text as string
query as string
cripticquestion as string
isrootnode as boolean
siccome voglio creare un array della classe dataItems col seguente
metodo appendo un Item
DataItems.AddItem:
Function AddItem(IsRootNode as Boolean, Text as String, Query as
string,CripticQuestion as string) As DataItems
Dim n as DataItems
n = New DataItems
n.isRootNode = isRootNode
n.text = text
n.query = query
n.cripticQuestion = cripticQuestion
Items.Append n
return n
End Function
Ora sembra che ogni volta che chiamo il metodo additem questo
inserisca un elemento nuovo all'array.
Mi pare lo scopo del metodo... Stai creando un albero praticamente,
questo metodo inserisce il nuovo elemento e ritorna l'elemento creato
e inserito.
forse quel New dataItems cancella l'oggetto precedente?
Ho paura che tu stia facendo una cosa del tipo:
n=n.addItem(...)
oppure n.addItem(...).addItem(...)
perchè questa sarebbe l'unica spiegazione al fatto che ti ritrovi
solo l'ultimo elemento inserito. New DataItems non cancella gli
elementi precedenti.
E una volta risolto questo problema come posso accedere ai vari
elementI?
Beh dipende da cosa devi fare. In generale dovrai usare un metodo
ricorsivo di questo tipo all'interno di DataItems:
Sub Visita()
Dim n As DataItems
//se pre-ordine
//visita il nodo corrente, cioè fai quello che devi fare con
questo nodo
For Each n In Items
n.Visita()
End For
//se post-ordine
//visita il nodo corrente
End Sub
Come vedi è differente se vuoi accedere il nodo radice prima dei
figli o dopo, e naturalmente questo dipende dal problema che devi
risolvere
Vincenzo
Ciao
+=+=+=+=+=+=+=
Andrea Baron
bobo at elbrigante dot it
www.pensieriparole.it
ICQ: 47145510
+=+=+=+=+=+=+=
Per trovare un amico bisogna chiudere un occhio; per tenerlo, due. --
Norman Douglas
|