Premetto sicuramente una mia carenza nel capire a fondo il funzionamento dei vari tipi di Array, l'esempio che posto è propio quello che mi serve, ma non riesco a farlo funzionare come voglio io.
Chiedo il vostro aiuto in quanto a forza di provare sono andato in confusione... :rolleyes: :rolleyes:
Questo il codice:
' Gambas class file
PRIVATE e AS NEW String[]
PUBLIC SUB _new()
ME.Center
END
PUBLIC SUB Form_Open()
END
PUBLIC SUB BtnExecute_Click()
DIM i AS Integer
FOR i = 0 TO 4
' e.Add(Str(i))
e.Add(i)
NEXT
e[0] = "D1"
e[1] = "D3"
e[2] = "D4 D9"
e[3] = "D5 D10"
e[4] = "D8"
FOR i = 0 TO e.Count - 1
TextArea1.Text = e[i] & Chr(10)
NEXT
END
PUBLIC SUB BtnFind_Click()
TextArea1.Clear()
TextArea1.Text = e.Find("D3")
END
PUBLIC SUB BtnExit_Click()
ME.Close()
END
Perchè nella TextArea viene visualizzato solo l'ultimo elemento?
Premendo il BtnFind mi restituisce la posizione all'interno dell' Array, a me serve che mi restituisca la stringa di ricerca, se esiste ovviamente.
l'errore penso sia qui:
FOR i = 0 TO e.Count - 1
TextArea1.Text = e[i] & Chr(10)
NEXT
prova con:
FOR i = 0 TO e.Count - 1
TextArea1.Text &= e[i] & Chr(10)
NEXT
Risolto :D
PUBLIC SUB BtnFind_Click()
DIM x as String
TextArea1.Clear()
x = e.Find("D3")
TextArea1.Text = e[x]
END
Riprendo questa discussione visto che devo chiedervi ancora aiuto inerente la stessa.
Come potete leggere dai post precedenti avevo bisogno di capire come fare la ricerca all'interno di un Array, ho provato ad applicare la soluzione ad una ricerca sui dei dati contenuti in un array popolato da una GridView con una condizione, che i dati che vanno a finire nell'array siano univoci, non ci sono riuscito, questo è il codice che stò cercando di utilizzare per risolvere:
PUBLIC SUB _new()
ME.Center
END
PUBLIC SUB Form_Open()
DIM r, k Integer
DIM conteggio AS NEW String[]
GridView1.Columns.Count = 1
GridView1.Rows.Count = 4
WITH GridView1
.Columns[0].Width = 80
END WITH
GridView1[0, 0].Text = "10"
GridView1[1, 0].Text = "20"
GridView1[2, 0].Text = "30"
GridView1[3, 0].Text = "10"
FOR r = 0 TO GridView1.Rows.Count - 1
IF conteggio.Find(GridView1[r, 0].Text) <> GridView1[r, 0].Text THEN
conteggio.Add(GridView1[r, 0].Text)
ELSE
Label1.Text = "NOK"
ENDIF
NEXT
FOR k = 0 TO conteggio.Count - 1
TextArea1.Text &= conteggio[k] & Chr(10)
NEXT
END
se provate vedrete che all'interno della TextArea un dato (il numero 10) viene ripetuto due volte.
# FOR r = 0 TO GridView1.Rows.Count - 1
# IF conteggio.Find(GridView1[r, 0].Text) <> -1 THEN
# conteggio.Add(GridView1[r, 0].Text)
# ELSE
# Label1.Text = "NOK"
# ENDIF
# NEXT
modifica così
il find se il dato non è presente nell' array ritorna -1 e quindi puoi m,emorizzare il dato