Vb (2)

Messaggioda stellacometa2003 » 26/05/2006, 22:17

Tempo fa lorven mi ha aiutata ad aggiustare una mia codifica riguardante l'estrazione di alcuni numeri casuali..Alla fine sono riuscita ad ottenere un programmino che estraesse consecutivamente, pigiando un pulsante, 90 numeri casuali e che, premendo un'altro pulsante, mi visualizasse in una lista tutti i numeri estratti! Fino qui tutto ok, oggi però mi sono accorta di un piccolo problemino...Se estraggo un tot di numeri poi schiaccio il pulsante per vedere la lista dei numeri estratti allora tutto ok, ma se, una volta vista la lista, ritorno ad estrarre i numeri e apro dinuovo la lista...ebbene appaiono solo i numeri che ho estratto dopo l'ultima visualizzazione della lista mentre gli altri, anche se rimangono memorizzati durante l'applicazione nel vettore, non vengono visualizzati insieme agli altri nella lista.

Quindi...se io estraggo tutti i numeri e poi SOLO alla fine visualizzo la lista, allora i numeri ci sono tutti, ma se durante l'estrazione vado a visionare la vista più volte allora i numeri non appaiono tutti insieme ma solo quelli estratti dopo l'ultima visualizzazione..

Come posso sistemare???

Spero di essermi saputa spiegare!
Grazie :wink:
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 1346 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda lorven » 26/05/2006, 22:28

Posta il tuo programma.
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 149 di 369
Iscritto il: 06/12/2005, 20:55

Messaggioda stellacometa2003 » 27/05/2006, 14:02

Codice:
Dim vett(totnumeri) As Integer
Dim n As Integer


Private Sub Command2_Click()
Form2.Show
Unload Me
End Sub

Private Sub Command3_Click()
End
End Sub

Private Sub Form_load()
n = 0
Randomize
End Sub

Private Sub Command1_Click()

    numero_ok = False
    Do Until numero_ok = True
   
        numero_estratto = min + Int((max - min + 1) * Rnd)
        numero_ok = True
               
        For i = 1 To n
                   
            If numero_estratto = vett(i) Then
               numero_ok = False
               Exit For
            End If
           
        Next
   
    Loop
     
    n = n + 1
    vett(n) = numero_estratto
    Text1.Text = ""
    Text1.Text = CStr(numero_estratto)
    Form2.List1.AddItem CStr(numero_estratto)
End Sub
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 1350 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda lorven » 27/05/2006, 17:46

Se ho capito bene l'organizzazione del tuo programma, hai un Form1 con 3 CommandButton:

1- ESTRAI (per estrarre un nuovo numero)
2- VISUALIZZA (per visualizzare i numeri già estratti)
3- FINE (fine programma)

e un Form2 con un CommandButton:
ESCI- per tornare in Form1 e continuare, dopo aver controllato i numeri già estratti.

In questo caso, non bisogna usare Unload Me per uscire da Form2, perchè resetterebbe il ListBox Form2.List1.
Io ho fatto così. In Form1 (con 3 CommandButton e un TextBox):
Codice:
Const totnumeri As Integer = 90
Const min = 1, max = 90

Dim vett(totnumeri) As Integer
Dim n As Integer

Private Sub Command2_Click()
Form1.Visible = False
Form2.Show
End Sub

Private Sub Command3_Click()
End
End Sub

Private Sub Form_load()
n = 0
Randomize
End Sub

Private Sub Command1_Click()

    numero_ok = False
    Do Until numero_ok = True
   
        numero_estratto = min + Int((max - min + 1) * Rnd)
        numero_ok = True
               
        For i = 1 To n
                   
            If numero_estratto = vett(i) Then
               numero_ok = False
               Exit For
            End If
           
        Next
   
    Loop
     
    n = n + 1
    vett(n) = numero_estratto
    Text1.Text = ""
    Text1.Text = CStr(numero_estratto)
    Form2.List1.AddItem CStr(numero_estratto)
End Sub



In Form2 (con un ListBox e un CommandButton):
Codice:

Private Sub Command1_Click()
Form2.Visible = False
Form1.Show
End Sub


Sperando funzioni secondo le tue attese, ciao! :D
P.s. : se ci giochi al superenalotto, al lotto o anche alla tombola, esigo la percentuale sulle vincite! :-D
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 151 di 369
Iscritto il: 06/12/2005, 20:55

Messaggioda stellacometa2003 » 27/05/2006, 17:52

Ehehehehe...certo certo... :-D :-D

In effetti l'obbiettivo era quello!!

A quanto ho capito al collegamento rendi invisibile il form precedente..bene!! Non ci avevo pensato...Grazie..

Emh..ora avrei una domandina ina ina più complicatina ina ina...

Allora...se io mi creo un menù nel primo form con varie voci tra cui anche salva..come lo imposto? Lo chiedo perchè so fare il menù ma non so collegare il salvataggio! Mi spiego meglio..apro la finestrella del menu scelgo salva, do un nome, scelgo dove salvarlo, salvo!! Così che posso riaprire l'applicaizione anche se la chiudo partendo dal punto in cui ho lasciato!!!

Grazie lorven..ti dovrei fare na statua a te!!! :D
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 1363 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda lorven » 27/05/2006, 18:08

Mò vuoi pure interrompere la tombola e riprenderla dopo (così puoi cambiare i numeri già estratti!) :shock: :!:
La risposta quando studierete i file ;-)
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 152 di 369
Iscritto il: 06/12/2005, 20:55

Messaggioda stellacometa2003 » 27/05/2006, 18:12

Nooooo daiiii..La scuola è già finita!!!

Non posso rimanere con questa curiosità....

Tanto l'estrazione della tombola è stata pure all'incirca una mia curiosità!!!

TI PREEEGOOOOO...Solo qualche indizio!!!!
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 1365 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda lorven » 27/05/2006, 19:18

Stella, l'argomento che ti interessa non è semplicissimo, se si parte da zero; richiede un po' di tempo.
Credo sia inutile postarti direttamente una soluzione. Cercando velocemente qualche guida in internet sui files in VB,
il meglio che ho trovato è questo:
http://www.cplusplus.it/VisualBasic/Pag ... /Files.htm
Vedi se può esserti utile; se non lo fosse, cercherò meglio.
:-)
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 153 di 369
Iscritto il: 06/12/2005, 20:55

Messaggioda antonio89x » 28/05/2006, 10:07

Dovresti guardare dinuovo la guida che ti ho inviato tempo fa... quella sull'utilizzo dei filesystem object
Avatar utente
antonio89x
Junior Member
Junior Member
 
Messaggio: 317 di 338
Iscritto il: 25/06/2005, 16:05
Località: Italia

Messaggioda lorven » 28/05/2006, 13:31

Stella tace... :( forse è rimasta un po' male perchè non soddisfatta della sua legittima curiosità.
Allora postiamo una semplicissima soluzione per salvare e riprendere la tombola!
Codice:
Const totnumeri As Integer = 90
Const min = 1, max = 90
Const nfile = "TG_001.txt"
Dim vett(totnumeri) As Integer
Dim n As Integer


Private Sub Command2_Click()
Form1.Visible = False
Form2.Show
End Sub

Private Sub Command3_Click()
End
End Sub

Private Sub Command4_Click()
Dim k As Integer
Open nfile For Output As 1
For k = 1 To n
    Print #1, CStr(vett(k))
Next
Close 1
   
End Sub

Private Sub Command5_Click()
Dim Riga As String
Open nfile For Input As 1
Form2.List1.Clear
n = 0
Do Until EOF(1)
   Line Input #1, Riga
   Form2.List1.AddItem Riga
   n = n + 1
   vett(n) = CInt(Riga)
Loop
Text1.Text = Riga
Close 1
End Sub

Private Sub Form_load()
n = 0
Randomize
End Sub

Private Sub Command1_Click()
If n < max - min + 1 Then
    numero_ok = False
    Do Until numero_ok = True
   
        numero_estratto = min + Int((max - min + 1) * Rnd)
        numero_ok = True
               
        For i = 1 To n
                   
            If numero_estratto = vett(i) Then
               numero_ok = False
               Exit For
            End If
           
        Next
   
    Loop
     
    n = n + 1
    vett(n) = numero_estratto
    Text1.Text = CStr(numero_estratto)
    Form2.List1.AddItem CStr(numero_estratto)
    Else
         MsgBox ("non ci sono più numeri da estrarre")
         Beep
End If
         
End Sub



Invito a rendere meno spartana la gestione del save&resume.
p.s.: non è più possibile estrarre un 91.mo numero e così non va più in loop. ;-)

:-)
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 155 di 369
Iscritto il: 06/12/2005, 20:55

Prossimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite