Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [VB6] Array e stringhe

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    103

    [VB6] Array e stringhe

    Ciao a tutti!

    Volevo sapere se è possibile creare dinamicamente delle variabili stringa e se è possibile assegnare ad ogni variabile un valore contenuto in un array...

    Mi spiego meglio: è possibile fare una cosa del genere?

    codice:
    For i = 1 to 3
       ...vorrei creare tre variabili stringa di nome Stringa1, Stringa2, Stringa3...
       ...cioè devono avere nel nome della variabile il valore di "i"...
    Next

    Una volta create le tre stringhe, se ad ognuna di esse volessi assegnare i valori contenuti in un array, come devo fare?
    Tipo una cosa del genere...

    codice:
    For i = 0 to 3
       Stringa"i+1" = nomeArray(i)
    Next

    A Stringa1 vorrei assegnare il primo elemento dell'array, a Stringa2 il secondo elemento, e così via...

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... ma perché non utilizzi un altro array di stringhe al posto delle 3 stringhe?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    103
    Ti spiego: devo leggere i record di una tabella.
    Se i record sono 8, devo creare 8 stringhe (Stringa1, Stringa2, Stringa3, ...) che contengano ognuna un record della tabella...

    Non so quanti possano essere i record....quindi non posso sapere quante variabili stringhe devo dichiarare...

    Avevo pensato di usare gli array, ma magari c'è una soluzione migliore...

    In ogni caso, questo codice sarebbe corretto?

    codice:
    Dim arrayStr() as String
    arrayStr(0) = Stringa1
    arrayStr(1) = Stringa2
    arrayStr(2) = Stringa3
    
    
    Dim arrayStrBis() as String
    For n = 0 To numRecord      'numRecord in questo caso è 3...
                        arrayStrBis(n) = rs("LOTTO") & ", " & rs("ARTICOLO") & ", " & rs("PESO") & "kg" & "; "
                        rs.MoveNext
    Next
    
    
    'Facendo così, assegno il contenuto dei record a Stringa1, Stringa2, Stringa3?
    arrayStr(0) = arrayStrBis(0)
    arrayStr(1) = arrayStrBis(1)
    arrayStr(2) = arrayStrBis(2)

    Grazie!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... stai scrivendo cose che hanno poco senso.

    Non ha senso (e non si può) usare variabili singole.

    Devi usare degli array con la ReDim

    codice:
    ReDim arrayStr(0 To numRecord - 1) As String
    
    ...
    
    For n=0 To numRecord-1
       arrayStr(n) = ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    103
    Ok! Grazie mille ancora!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Io, se avessi dovuto affrontare questo scenario avrei creato una nuova classe, che al suo interno contiene una specie di id, cioè un nome univoco tipo "stringa1", "stringa2", ecc e il valore da memorizzare.. Gli oggetti vengono instanziati in un ciclo for e aggiunti a una list di oggetti o un'altra collection qualsiasi. Anzi, forse più semplice ancora sarebbe stato usare i dictionary.. Ma vb6 non offre oggetti simili, suppongo..
    Ciao!

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mi sembra che il problema si risolva molto semplicemente con un array allocato dinamicamente (con la ReDim). Sinceramente non vedo perché utilizzare chissà quale marchingegno ...

    P.S. Se aggiungi un riferimento alla libreria 'Microsoft Scripting Runtime' puoi utilizzare l'oggetto Dictionary dichiarando ad esempio

    Dim d As Dictionary
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    103
    Grazie a tutti!
    Alla fine ho risolto usando un array allocato dinamicamente, usando la ReDim.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.