Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Confrontare valori String in collection
Forum - Visual Basic 6 - Confrontare valori String in collection

Avatar
swet (Normal User)
Pro


Messaggi: 128
Iscritto: 01/01/2009

Segnala al moderatore
Postato alle 10:30
Martedì, 28/12/2010
Salve a tutti,

Come faccio a confrontare i valori in una collection?
Partendo da un foglio excel riempio un array con dei valori che possono essere uguali tra loro, come faccio ad individuarli?
ho provato con questo codice ma non mostra il MSGBOX.
Codice sorgente - presumibilmente VB.NET

  1. Type archivio
  2.  numeropo As New Collection
  3. end type
  4.  
  5. Dim i As Integer
  6.  
  7. i = 1
  8. For i = 1 To elenco.numeropo.Count  
  9.     If elenco.numeropo.Item(i) = elenco.numeropo.Item(i + 1) Then
  10.         Exit For
  11.     'Scrivere una funzione che verifica il turno per la corrispondenza
  12.     MsgBox ("MatchFound")
  13.      End If
  14.     i = i + 1
  15.     Next i


numeropo è riempito mediante un ciclo for each con i valori di una colonna del file excel.

Grazie

PM
Avatar
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 11:08
Mercoledì, 29/12/2010
scusa ma se fai l'ordinamento del tuo array dopo non avrai tutti i numeri ordinati per cui se se posizionato in array(i) lo confronti con il sucessivo o precedente?

PM
Avatar
swet (Normal User)
Pro


Messaggi: 128
Iscritto: 01/01/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 12:45
Lunedì, 03/01/2011
Ti spiego il mio problema, io ho dei valori uguali all'interno di un array, mi servirebbe trovare tutti i valori uguali e sommarli tra loro, però una sola volta, ad esempio, ho provato con due contatori all'interno di un ciclo(uno dentro l' altro), e ogni volta che viene trovato un valore uguale(anche se era gia stato trovato in qualche ciclo precedente) esegue l'azione .

Ecco il codice:

Codice sorgente - presumibilmente VB.NET

  1. Dim quantità As Integer
  2. For i = 0 To 29
  3.     For y = 1 To 29
  4.       If elenco(i).numeropo <> "" Then
  5.        
  6.             If elenco(i).numeropo = elenco(y).numeropo Then
  7.                  MsgBox ("MatchFound" & elenco(y).numeropo)
  8.                   y = y + 1
  9.             End If
  10.             End If
  11.         Next y
  12.    
  13. Next i


PM
Avatar
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 16:32
Lunedì, 03/01/2011
scusami ma allora tu più che una somma di numeri vuoi una conta dei valori uguali o sbaglio ???


esempio:
array(0) = 2
array(1) = 2
array(2) = 5
array(3) = 7

tu ciò che vorresti ottenere dovrebbe essere
2 -> 2
5 -> 1
7 -> 1

giusto????

fammi un esempio se non ho capito il problema, per favore, che son di coccio... :D....
altra cosa...il file excel è vincolante??? nel senso i tuoi dati li devi avere necessariamente in excel? perchè se li avessi  in un db ti basta fare una select con un count e sei apposto...dopo basta soltanto leggere il recordset...

PM
Avatar
swet (Normal User)
Pro


Messaggi: 128
Iscritto: 01/01/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 16:45
Lunedì, 03/01/2011
Si hai capito benissimo , mi serve fare questo confronto in modo da poter poi fare la somma di altri dati!

Purtroppo i dati risiedono in un file excel.

Puoi aiutarmi?
Sicuramente è una cosa semplice da implementare ma non ci riesco proprio.

Ti ringrazio per il tempo dedicatomi!!

PM
Avatar
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 17:11
Lunedì, 03/01/2011
allora apri un nuovo progetto inserisci un commandButton e 2 listbox

incolla al progetto e vedi come funziona

Private Sub Command1_Click()
Dim quantità As Integer
Dim arr() As Integer
Dim i As Integer
Dim cont As Integer
ReDim arr(0 To InputBox("inserisci num elementi"))

'caricamento nell'array
List1.Clear
List2.Clear
For i = 0 To UBound(arr)
    arr(i) = Int(Rnd * 10) + 1
    List2.AddItem arr(i)
Next i

List2.AddItem "______________________"

'ordinamento
Call ordina(arr)

For i = 0 To UBound(arr)
    List2.AddItem arr(i)
Next i
cont = 1
For i = 1 To UBound(arr)
    If arr(i - 1) = arr(i) Then
        cont = cont + 1
    Else
        List1.AddItem (arr(i - 1) & "  " & cont)
        cont = 1
    End If
Next i
List1.AddItem (arr(i - 1) & "  " & cont)
End Sub

Private Sub ordina(lista() As Integer)
Dim i, j, temp As Integer
For i = UBound(lista) - 1 To 0 Step -1
    For j = 0 To i
        If lista(j) > lista(j + 1) Then
            temp = lista(j)
            lista(j) = lista(j + 1)
            lista(j + 1) = temp
        End If
    Next j
Next i
End Sub


se ci son parti che non ti son chiare te le spiego oppure mandami un pm che ti mando la mail..se ti va mi mandi il progetto ed il punto e cerco di risolverlo nello specifico...

ma dovrebbe essere chiaro a grandi linee...


04/01/2011

come va? sei riuscito a risolvere?

Ultima modifica effettuata da poeo85 il 04/01/2011 alle 15:07
PM