Oppure

Loading
07/08/10 8:52
queen_live78
Buongiorno a tutti ho realizzato un programmino che estrae dei numeri a caso, tutti i numeri estratti vengono aggiunti ad una listbox e successivamente incrementano la proprietà caption di una label, mostrando a schermo il risultato delle estrazioni, ho la neccessità di verificare i numeri presenti nella listbox per vedere se il numero estratto gia' esiste, nel caso esistesse continuerei lìestrazione e non aggiungerei il risultato a video... non so se mi sono spiegato bene .... qualche consiglio ?8-|
aaa
07/08/10 9:19
Alfonso
Per ogni numero estratto scorri la lista, se esiste prosegui con un'altra estrazione
For i = 0 To List.ListCount - 1
    If List.List(i) = NumeroEstratto Then
        Esiste = True
    Else
        Esiste = False
    End If
Next


P.S.
Usare una listbox per il tuo scopo non è il massimo. Sarebbe meglio un array.
Ultima modifica effettuata da Alfonso 07/08/10 9:23
aaa
07/08/10 21:22
queen_live78
Non riesco a capire perche' non mi funziona strano.....
aaa
07/08/10 22:08
Alfonso
Posta il codice che non funziona!
aaa
08/08/10 7:19
queen_live78
Certo...

allora per l'estrazione del numero utilizzo una funzione chiamata RandomRange
Private Function RandomRange(ByVal NumMin As Long, ByVal NumMax As Long) As Long

  'Inizializza il generatore di numeri casuali.
  Randomize

  'genera il numero casuale
  RandomRange = Int((NumMax - NumMin + 1) * Rnd + NumMin)

End Function






nel mio progetto ho inserito un oggetto timer : che all'interno... ha il seguente codice:

Dim NumeroCasuale As Long

NumeroCasuale = RandomRange(XPText1.Text, XPText2.Text)
Label1.Caption = NumeroCasuale



il timer1 viene stoppato dall'ingresso del timer2


fatto questo una volta che timer1 veniva stoppato avevo un numero da aggiungere alla xplist1


If Label1.Caption <> 0 Then

XPList1.AddItem Label1.Caption

Label12.Caption = Label12.Caption & " - " & Label1.Caption

 Else
        
   
       ''Timer1.Enabled = True
        
    End If






COn questo funziona tutto, unico problema .... se si da un range di numeri molto basso puo' capitare che un numero gia' estratto esca per la seconda volta allora avevo pensato di filtrare il numeri estratti , verificandoli prima di aggiungerli alla xplist1, ho applicato il tuo esempio ma non riesco a cavarne piede, in pratica non succede niente...


il codice postato sopra applicando il tuo esempio è cosi'
If Label1.Caption <> 0 Then
 
 For i = 0 To XPList1.ListCount - 1
 If XPList1.List(i) = NumeroCasuale Then
     XPList1.AddItem Label1.Caption

Label12.Caption = Label12.Caption & " - " & Label1.Caption
 
 Else
        
   
       Timer1.Enabled = True
        
    End If
Next
 
 End If


nella label12.caption non succede niente , non viene aggiunto nessun valore compresa la xplist1....


che puo' essere ?8-|
aaa
08/08/10 9:20
Alfonso
Mi sembra di capire che NumeroCasuale sia dichiarato all'interno della sub del Timer1, per cui non vedibile dalla routine che aggiunge il numero estratto.

Se metti Option Explicit nelle dichiarazioni del form, ti verrà subito segnalato che nella Sub
If Label1.Caption <> 0 Then
   For i = 0 To XPList1.ListCount - 1
        If XPList1.List(i) = NumeroCasuale Then
            XPList1.AddItem Label1.Caption
            Label12.Caption = Label12.Caption & " - " & Label1.Caption
        Else
            Timer1.Enabled = True
        End If
   Next
End If


NumeroCasuale è <Variabile non definita>
Dim NumeroCasuale as long deve essere messo nelle dichiarazioni del form.

In ogni caso usando Label1 come deposito dei numeri estratti, NumeroCasuale è superfluo. La tua sub diventa:

If Label1.Caption <> 0 Then

   Dim Esiste as boolean
   Esiste=False
   For i = 0 To XPList1.ListCount - 1
        If XPList1.List(i) = Label1.CaptionThen
            Esiste=true
            Exit for
        End If
   Next

   If Esiste = False then
       XPList1.AddItem Label1.Caption
       Label12.Caption = Label12.Caption & " - " & Label1.Caption
       Timer1.Enabled = False
    End If

End if
aaa
08/08/10 16:42
queen_live78
ottimo è perfetto, funziona benissimo hai colto il problema nel segno !!! Grazie mille ancora:k:
Ultima modifica effettuata da queen_live78 28/08/10 16:58
aaa