Autore Topic: [Risolto] Quesito riguardo FOR EACH applicato ad un array  (Letto 3575 volte)

Offline g.grandi

  • Gambero
  • **
  • Post: 51
    • Mostra profilo
[Risolto] Quesito riguardo FOR EACH applicato ad un array
« il: 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

« Ultima modifica: 26 Febbraio 2015, 14:16:25 da g.grandi »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Quesito riguardo FOR EACH applicato ad un array
« Risposta #1 il: 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

« Ultima modifica: 25 Febbraio 2015, 11:41:17 da Ceskho »

Offline g.grandi

  • Gambero
  • **
  • Post: 51
    • Mostra profilo
Re: Quesito riguardo FOR EACH applicato ad un array
« Risposta #2 il: 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.

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re: Quesito riguardo FOR EACH applicato ad un array
« Risposta #3 il: 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]
« Ultima modifica: 25 Febbraio 2015, 20:05:17 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline pastrank

  • Maestro Gambero
  • ****
  • Post: 266
    • Mostra profilo
Re: Quesito riguardo FOR EACH applicato ad un array
« Risposta #4 il: 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

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Quesito riguardo FOR EACH applicato ad un array
« Risposta #5 il: 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.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline g.grandi

  • Gambero
  • **
  • Post: 51
    • Mostra profilo
Re: Quesito riguardo FOR EACH applicato ad un array
« Risposta #6 il: 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

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Quesito riguardo FOR EACH applicato ad un array
« Risposta #7 il: 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.   :)
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »