Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    79

    [VB 6.0] Creazioni variabili stringa da codice

    ciao ragazzi, mi servirebbe assolutamente un consiglio prezioso.

    Vi spiego il mio problema:
    il programma che sto facendo deve ricevere un numero indefinito di messaggi. Ogni messaggio devo memorizzarlo in una variabile diversa.

    Le variabili devono essere del tipo: Messaggio01, Messaggio02, Messaggio03,....

    Vi faccio un esempio per capire meglio: mi sono arrivati 2 messaggi e da codice ho creato le variabili Messaggio01 e Messaggio02 per memorzzarli.

    Me ne arriva uno nuovo, il terzo.

    Il programma deve controllare le variabili, tramite un contatore, che esistono già: i è il contatore. Messaggio01 esiste? Sì, allora passo oltre. Messaggio02 esiste? Sì, allora passo oltre. Messaggio03 esiste? No, allora creo la variabile dimensionata a stringa di Messaggio03 e ci memorizzo il messaggio nuovo.

    Per fare tutto questo, però, dovrei sapere come:
    -Creare da codice una variabile stringa secondo un contatore.
    -Controllare con un contatore fino a che punto sono numerate le variabili messaggio per creare quella seguente.

    Vi ringrazio molto per l'attenzione e spero in un aiuto!

    Ciao.
    "La fortuna aiuta gli audaci"
    (e non gli adagiati)

  2. #2
    Utente di HTML.it L'avatar di buba88
    Registrato dal
    Feb 2004
    Messaggi
    538
    Beh penso che l unico modo per fare quello che pensi tu sia usare i vettori ( o Array)

    Penso che tu abbia una function che gestisce l evento di arrivo del messaggio quindi il codice potresti organizzarlo cosi:

    codice:
    dim messaggi() as string
    dim i as integer
    
    Private Sub Form_Inizialize()
    i=0
    end sub
    
    Private sub Arrivo_Messaggio(messaggio)
    messaggi(i) = messaggio
    i=i+1
    end sub

  3. #3
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Originariamente inviato da buba88
    Beh penso che l unico modo per fare quello che pensi tu sia usare i vettori ( o Array)

    Penso che tu abbia una function che gestisce l evento di arrivo del messaggio quindi il codice potresti organizzarlo cosi:

    codice:
    dim messaggi() as string
    dim i as integer
    
    Private Sub Form_Inizialize()
    i=0
    end sub
    
    Private sub Arrivo_Messaggio(messaggio)
    messaggi(i) = messaggio
    i=i+1
    end sub
    Senza togliere nulla alla spiegazione di buba88, aggiungerei per il secondo punto di Loue che è necessario ridimensionare l'array in base alle sue dimensioni:
    codice:
    ReDim Preserve Messaggi(UBound(Messaggi) + 1&)
    ... e non usare while wend è una sintassi deprecata

  4. #4
    Utente di HTML.it L'avatar di buba88
    Registrato dal
    Feb 2004
    Messaggi
    538
    hai ragione mabi me n ero dimenticato

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    79
    vi ringrazio molto per le reply. Però c'è un problema.

    Forse non ho capito bene io, tuttavia:
    v() è il vettore che io dimensiono a stringa e che poi ridimensiono a seconda della Len(messaggio). E così memorizzo il primo messaggio che mi arriva.

    Però per il secondo messaggio io devo sempre usare questo vettore v() e ridimensionarlo a seconda della Len(messaggio2) che arriva. In questo modo viene sovrascritto il messaggio1. Io invece avrei bisogno di creare un altro vettore che faccia riferimento ad un'altra area di memoria per memorizzare messaggio2.
    "La fortuna aiuta gli audaci"
    (e non gli adagiati)

  6. #6
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, con l'istruzione Redim Preserve vettore(MaxIndiceVettore + 1) non si fa altro che aumentare la dimensione del vettore, mantenendo i dati che ha in esso, e quando tu devi inserire un nuovo messaggio, lo devi fare usando l'ultimo indice col quale hai dimensionato il vettore (MaxIndiceVettore+1) , ti faccio un esempio:
    codice:
    dim messaggi() as string
    dim idxMsg as long
    
    private sub AddNewMsg(messaggio as string)
       idxMsg=idxMsg+1
       redim preserve messaggi(idxMsg)
       messaggi(idxMsg)=messaggio
    end sub
    
    Private Sub Form_Load()
       idxMsg = -1
    End Sub
    Per inserire un nuovo messaggio, basta richiamare la sub AddNewMsg passandogli il messaggio da memorizzare, ogni messaggio viene inserito nel vettore messaggi usando sempre un indice diverso, pertanto non perderai nessun dato. Per recuperare i dati che sono nel vettore, non devi far altro che ciclare il vettore messaggi per per sua grandezza, usando la funzione Ubound(messaggi) , in pratica, volendo visualizzare i messaggi ricevuti in una listbox:
    codice:
    private sub LeggiMessaggi()
       for idxMsg=0 to Ubound(messaggi)
          List1.AddItem messaggi(idxMsg)
       next
    end sub
    Jupy

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.