+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 8 su 8

Discussione: variabile con corrispondenza dinamica nel ciclo for/next

  1. #1
    indigo5 non è in linea Scolaretto
    Luogo
    Venezia
    Post
    71

    variabile con corrispondenza dinamica nel ciclo for/next

    solitamente uso i cicli for next in questo semplice modo

    codice:
            For i = 1 To 3
    
                MsgBox(1 + i)
    
            Next
    ottenendo 234.
    Ma in un ciclo for e next è possibile dare a una variabile una corrispondenza dinamica?
    Ad esempio

    codice:
            Dim A1 As Integer = 1
            Dim A2 As Integer = 2
            Dim A3 As Integer = 3
            Dim B As Integer
    
            For i = 1 To 3
    
    
                B = A(i) + 1
                MsgBox(B)
    
            Next
    insomma utilizzare (i) per comporre il nome di A ad ogni passaggio.

  2. #2
    indigo5 non è in linea Scolaretto
    Luogo
    Venezia
    Post
    71
    riflettendoci potrei considerarli un array e risolvere così
    codice:
            Dim totale As Integer = 3 - 1
    
            Dim A(totale) As Integer
            A(0) = 1
            A(1) = 2
            A(2) = 3
    
    
            For Each B As String In A
    
                B = B + 1
    
                MsgBox(B)
    
    
            Next
    scusate

  3. #3
    L'avatar di _alka_
    _alka_ ora è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,177
    Quote Originariamente inviato da indigo5 Visualizza il messaggio
    Ma in un ciclo for e next è possibile dare a una variabile una corrispondenza dinamica?
    [..]
    insomma utilizzare (i) per comporre il nome di A ad ogni passaggio.
    Quando esegui un ciclo, salvo modificarne il valore, della variabile che viene incrementata a ogni iterazione puoi farne l'uso che vuoi: concatenarlo a una stringa, usarlo come indice di un array, ecc.

    La soluzione più efficace dipende da ciò che bisogna precisamente fare: nel tuo caso, l'esempio non è molto chiaro, o comunque trovo che l'array che hai creato (ammesso che i valori siano esattamente quelli) non serva a nulla, perché i valori possono essere determinati in funzione del valore corrente della variabile indice.

    Eventualmente, spiega meglio.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  4. #4
    Post
    32
    Concordo con _alka_, se l'intento è come dal tuo primo post tutto questo è un lavoro inutile che avevi già risolto con il primo codice che hai postato (senza nessuna variabile). Se invece il lavoro è più complicato, come penso, dovresti essere più specifico: input dei dati nella matrice, tipo di condizione per valorizzare, output, ecc.)
    Per assurdo potresti usare anche una tabella utilizzando l'indice della for...next come indice del record.

  5. #5
    Dev-01 non è in linea Scribacchino
    Post
    502
    codice:
            Dim totale As Integer = 3 - 1 ' Perché non direttamente 2?
    
            Dim A(totale) As Integer
            A(0) = 1
            A(1) = 2
            A(2) = 3
    
    
            For Each B As String In A ' In A non vi sono stringhe perché è un array di interi
    
                B = B + 1 ' Che senso ha sfruttare A se poi incrementi di 1?
    
                MsgBox(B)
    
            Next

    Ma in un ciclo for e next è possibile dare a una variabile una corrispondenza dinamica?

    [...omissis...]

    insomma utilizzare (i) per comporre il nome di A ad ogni passaggio.

    E' possibile operando via reflection dove puoi utilizzare anche le variabili sfruttandone il nome in formato stringa.
    Ultima modifica di Dev-01; 13-01-2020 18:38 

  6. #6
    indigo5 non è in linea Scolaretto
    Luogo
    Venezia
    Post
    71
    per spiegarmi meglio faccio un esempio più chiaro.

    ora purtroppo(perché non so fare altro) scrivo il codice cosi
    codice:
                B1 = A1 + C1
                B2 = A2 + C2
                B3 = A3 + C3
                B4 = A4 + C4
                B5 = A5 + C5
    
               .... fino alla fine
    
               B90 = A90 + C90
    vorrei capire se invece si può fare così

    codice:
                For i = 1 To 90
    
                            B(i) = A(i) + C(i)
              
               Next
    ho provato con varie sintassi ma non ci sono riuscita.

  7. #7
    L'avatar di _alka_
    _alka_ ora è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,177
    Quote Originariamente inviato da indigo5 Visualizza il messaggio
    vorrei capire se invece si può fare così
    codice:
                For i = 1 To 90
                           B(i) = A(i) + C(i)
               Next
    Certamente! Devi usare gli array.
    Leggi questo articolo.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  8. #8
    Dev-01 non è in linea Scribacchino
    Post
    502
    Se vuoi utilizzare le variabili e richiamarle col loro nome componendolo come una stringa la risposta è la reflection.

    Se vuoi spiegare cosa devi fare e come devi utilizzare i valori di queste variabili magari ti si può consigliare meglio e può essere che il suggerimento di _alka_ sia quello che fa al caso tuo.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi