Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: tornu - 21 Ottobre 2010, 12:31:55

Titolo: [RISOLTO] Semplice Array
Inserito da: tornu - 21 Ottobre 2010, 12:31:55
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:
Codice: gambas [Seleziona]
' 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.
Titolo: Re: Semplice Array
Inserito da: milio - 21 Ottobre 2010, 12:37:26
l'errore penso sia qui:

Codice: gambas [Seleziona]
FOR i = 0 TO e.Count - 1  
   TextArea1.Text = e[i] & Chr(10) 
NEXT 


prova con:

Codice: gambas [Seleziona]
FOR i = 0 TO e.Count - 1  
   TextArea1.Text &= e[i] & Chr(10) 
NEXT 

Titolo: Re: Semplice Array
Inserito da: tornu - 21 Ottobre 2010, 12:59:17
 :ok: Grazie tante milio
il primo passo ci siamo.

E per quanto riguarda la ricerca all'interno dell'Array?
Titolo: Re: Semplice Array
Inserito da: tornu - 21 Ottobre 2010, 13:14:39
Risolto  :D

Codice: gambas [Seleziona]
PUBLIC SUB BtnFind_Click()  
  DIM x as String

  TextArea1.Clear()  
  
  x = e.Find("D3")
  TextArea1.Text = e[x]  
 END  
Titolo: Re: [RISOLTO] Semplice Array
Inserito da: milio - 21 Ottobre 2010, 13:17:24
:ok: Grazie tante milio
il primo passo ci siamo.

E per quanto riguarda la ricerca all'interno dell'Array?


Scusa non avevo letto tutto il tuo primo post  :-[
Titolo: Re: [RISOLTO] Semplice Array
Inserito da: tornu - 30 Ottobre 2010, 12:51:39
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:
Codice: gambas [Seleziona]
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.
Titolo: Re: [RISOLTO] Semplice Array
Inserito da: fsurfing - 30 Ottobre 2010, 13:05:26
Codice: [Seleziona]
# 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
Titolo: Re: [RISOLTO] Semplice Array
Inserito da: tornu - 30 Ottobre 2010, 17:26:22
Codice: [Seleziona]
# 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

Ciao, fsurfing
ho provato la tua soluzione, non funziona, non memorizza nessun dato
Titolo: Re: [RISOLTO] Semplice Array
Inserito da: fsurfing - 30 Ottobre 2010, 19:25:16
ops  ;D

IF conteggio.Find(GridView1[r, 0].Text) = -1 THEN   

chiedo venia
Titolo: Re: [RISOLTO] Semplice Array
Inserito da: tornu - 30 Ottobre 2010, 21:40:34
 :ok: :ok: Grazie tante fsurfing

Che faccio... metto un doppio [RISOLTO]... ;D (tanto Ceskho...non c'è... :rotfl:)
Titolo: Re: [RISOLTO] Semplice Array
Inserito da: fsurfing - 30 Ottobre 2010, 22:37:37
lascia pure così , strana comunque questa assenza di cesko  ??? chissa che gli è capitato!
Titolo: Re: [RISOLTO] Semplice Array
Inserito da: Ceskho - 02 Novembre 2010, 16:49:53
lascia pure così , strana comunque questa assenza di cesko  ??? chissa che gli è capitato!

speravate che gli alieni mi avessero rapito vero???In realtrà ci hanno provato ma poi si sono arresi pure loro.... :rotfl: