Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: g.grandi - 25 Febbraio 2015, 10:41:30

Titolo: [Risolto] Quesito riguardo FOR EACH applicato ad un array
Inserito da: g.grandi - 25 Febbraio 2015, 10:41:30
Salve a tutti.
Vorrei sottoporvi un quesito per pura informazione. Se scorro con un ciclo FOR EACH un array, è possibile risalire al numero dell'elemento dell'array che sto processando? Faccio un esempio per farmi capire meglio

Codice: gambas [Seleziona]

DIM stArray AS String[]
DIM st AS String

stArray=Split("Questo è un esempio"," ")
FOR EACH st IN stArray

  
  visualizzare l'indice dell'elemento memorizzato in st

Codice: gambas [Seleziona]

NEXT


Grazie per la pazienza.
Giovanni Grandi

Titolo: Re: Quesito riguardo FOR EACH applicato ad un array
Inserito da: Ceskho - 25 Febbraio 2015, 11:39:38
Inizializza a 0 una variabile prima del ciclo che faccia da contatore e all'interno del ciclo la incrementi di 1 in modo da sapere l'indice a cui sei arrivato

Codice: gambas [Seleziona]

DIM stArray AS String[]  
DIM st AS String  
DIM i as Integer
      
stArray=Split("Questo è un esempio"," ")  
FOR EACH st IN stArray
    Print i;
    INC i
NEXT

Titolo: Re: Quesito riguardo FOR EACH applicato ad un array
Inserito da: g.grandi - 25 Febbraio 2015, 14:31:31

Ne deduco quindi che non vi è la possibilità di avere l'indice dell'elemento in esame direttamente, come invece si potrebbe fare nel caso l'oggetto da scansionare fosse una collection facendo riferimento alla .Key.

Grazie del chiarimento.
Titolo: Re: Quesito riguardo FOR EACH applicato ad un array
Inserito da: Gianluigi - 25 Febbraio 2015, 19:41:12

Ne deduco quindi che non vi è la possibilità di avere l'indice dell'elemento in esame direttamente, come invece si potrebbe fare nel caso l'oggetto da scansionare fosse una collection facendo riferimento alla .Key.

Grazie del chiarimento.


Scusa ma non riesco a capire cosa intendi.  Nel caso in esame con la "Key" 0 ottieni "Questo", con 1 ottieni "è" con 2 ottieni "un" e con 3 ottieni "esempio"  :-\

PS: non si capisce cosa voglio dire è meglio se provi questo:
Codice: gambas [Seleziona]

   Dim s As String[]
   s = Split("Questo è un esempio", " ")
   Print s[3]
Titolo: Re: Quesito riguardo FOR EACH applicato ad un array
Inserito da: pastrank - 25 Febbraio 2015, 20:33:00
Ne deduco quindi che non vi è la possibilità di avere l'indice dell'elemento in esame direttamente

Ma cosi' no?

Codice: [Seleziona]
    Dim stArray As String[]  
    Dim st As String
    Dim i As Integer
     
    stArray = Split("Questo è un esempio", " ") 
    For i = 0 To stArray.Count - 1
     
      Print CStr(i) & "-" & stArray[i]
    Next
Titolo: Re: Quesito riguardo FOR EACH applicato ad un array
Inserito da: vuott - 25 Febbraio 2015, 21:18:34
Ne deduco quindi che non vi è la possibilità di avere l'indice dell'elemento in esame direttamente

Attualmente non esiste una proprietà della variabile vettoriale che restituisca l'elemento che si sta processando. Tale necessità non è stata avvertita, neppure da parte dei programmatori,  probabilmente perché - come suggerito da pastrank (con il quale mi trovo ancora una volta d'accordo)
Codice: [Seleziona]
    Dim stArray As String[]  
    Dim st As String
    Dim i As Integer
      
    stArray = Split("Questo è un esempio", " ")  
    For i = 0 To stArray.Count - 1
      
      Print CStr(i) & "-" & stArray[i]
    Next
- l'indice dell'elemento processato può essere agevolmente ricavato dalla variabile contatore utilizzando il semplice ciclo For...Next, anziché quello For Each da te usato.
Titolo: Re: Quesito riguardo FOR EACH applicato ad un array
Inserito da: g.grandi - 25 Febbraio 2015, 22:32:34

Avete tutti pienamente ragione. Ed infatti il programma l'ho implementato con un normale ciclo FOR con indice.
Siccome sto iniziando a ingranare un po di cose su come funziona la programmazione in Gambas, mi era venuta l'idea che
fosse possibile ottenere il dato in quesito. Mi serviva solo per mettermi in pace che non mi è sfuggita proprietà nascosta.

Grazie a tutti quanti
Titolo: Re: Quesito riguardo FOR EACH applicato ad un array
Inserito da: vuott - 25 Febbraio 2015, 23:27:52

Siccome sto iniziando a ingranare un po di cose su come funziona la programmazione in Gambas, mi era venuta l'idea che
fosse possibile ottenere il dato in quesito. Mi serviva solo per mettermi in pace che non mi è sfuggita proprietà nascosta.


Bene, ottimo metodo.   :)