realbasic-nug.it
[Top] [All Lists]

Re: Array di oggetti

To: REALbasic NUG Italian <realbasic-nug dot it at lists dot realsoftware dot com>
Subject: Re: Array di oggetti
From: Andrea Baron <bobo at elbrigante dot it>
Date: Sun, 3 Jul 2005 12:29:37 +0200
Delivered-to: realbasic-nug dot it at lists dot realsoftware dot com
References: <6f30316a2a9c1e772790cea62669bf39 at email dot it>

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


<Prev in Thread] Current Thread [Next in Thread>