queen_live78 (Ex-Member)
Newbie
Messaggi: 12
Iscritto: 22/04/2009
|
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 ?
|
|
Alfonso (Ex-Member)
Guru
Messaggi: 688
Iscritto: 30/09/2009
|
Per ogni numero estratto scorri la lista, se esiste prosegui con un'altra estrazione
Codice sorgente - presumibilmente VB.NET |
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 il 07/08/2010 alle 11:23 |
|
queen_live78 (Ex-Member)
Newbie
Messaggi: 12
Iscritto: 22/04/2009
|
Non riesco a capire perche' non mi funziona strano.....
|
|
Alfonso (Ex-Member)
Guru
Messaggi: 688
Iscritto: 30/09/2009
|
Posta il codice che non funziona!
|
|
queen_live78 (Ex-Member)
Newbie
Messaggi: 12
Iscritto: 22/04/2009
|
Certo...
allora per l'estrazione del numero utilizzo una funzione chiamata RandomRange
Codice sorgente - presumibilmente VB.NET |
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:
Codice sorgente - presumibilmente Visual Basic 6 |
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
Codice sorgente - presumibilmente VB.NET |
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'
Codice sorgente - presumibilmente VB.NET |
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 ? |
|
Alfonso (Ex-Member)
Guru
Messaggi: 688
Iscritto: 30/09/2009
|
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
Codice sorgente - presumibilmente VB.NET |
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:
Codice sorgente - presumibilmente VB.NET |
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
|
|
|
queen_live78 (Ex-Member)
Newbie
Messaggi: 12
Iscritto: 22/04/2009
|
ottimo è perfetto, funziona benissimo hai colto il problema nel segno !!! Grazie mille ancora
Ultima modifica effettuata da queen_live78 il 28/08/2010 alle 18:58 |
|