Vb (2)
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
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

Risposte
Posta il tuo programma.
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
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):
In Form2 (con un ListBox e un CommandButton):
Sperando funzioni secondo le tue attese, ciao!
P.s. : se ci giochi al superenalotto, al lotto o anche alla tombola, esigo la percentuale sulle vincite!
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):
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):
Private Sub Command1_Click() Form2.Visible = False Form1.Show End Sub
Sperando funzioni secondo le tue attese, ciao!

P.s. : se ci giochi al superenalotto, al lotto o anche alla tombola, esigo la percentuale sulle vincite!

Ehehehehe...certo certo...

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!!!


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!!!

Mò vuoi pure interrompere la tombola e riprenderla dopo (così puoi cambiare i numeri già estratti!)
La risposta quando studierete i file


La risposta quando studierete i file

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!!!!
Non posso rimanere con questa curiosità....
Tanto l'estrazione della tombola è stata pure all'incirca una mia curiosità!!!
TI PREEEGOOOOO...Solo qualche indizio!!!!
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.
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.

Dovresti guardare dinuovo la guida che ti ho inviato tempo fa... quella sull'utilizzo dei filesystem object
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!
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.

Allora postiamo una semplicissima soluzione per salvare e riprendere la tombola!
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.


Ehy lorven..tranquillo..non ci sono rimasta male...è che mi sto solo ricollegando ora perchè ieri ho staccato per cercare alcune informazioni sul mio libro ma senza risultati...Ti ringrazio per il link e la codifica..credo che come prima cosa guarderò il link così ti faccio sapere cosa ne ho capito!!! Grazie un miliardo...

WoooooW....non sembra difficile però mi sa che mi devo anche andare a dare un occhiata a cosa siano i record e il loro utilizzo!!
Che impresa che mi sono messa sulle spalle..però se non rispondo a sta curisità sarà peggio...
Grazie mille lorven...cercherò di imparare queste cose e poi mi rivedo meglio la codifica che mi hai postato perchè vista così a primo impatto mi fa un pò di confusione!!
Grazie ancora prof lorven!!!
Che impresa che mi sono messa sulle spalle..però se non rispondo a sta curisità sarà peggio...
Grazie mille lorven...cercherò di imparare queste cose e poi mi rivedo meglio la codifica che mi hai postato perchè vista così a primo impatto mi fa un pò di confusione!!
Grazie ancora prof lorven!!!

Allora...dopo tanto googlogare e studiacchiare qua e la ho imparato a salvare un file di testo...Ad esempio, ho un'applicazione con una textbox e due bottoni e scrivo questo codice:
Questo bottone mi carica il file salvato!
Questa me lo salva!!!
Ora capisco meglio il codice di lorven..MAAAAAAAAAA.....
Ho riscontrato che l'applicazione salva solo un file per volta e che una volta che ne salvo uno nuovo cancella il precedente!!! Come si fa per salvare più file e poi appena schiccio il Command2 scelgo quello che voglio aprire??
Private Sub Command1_Click() Text1.Text = "" On Error GoTo fine Open App.Path & "\testo.txt" For Input As 1 Do Input #1, linea Text1.Text = Text1 & linea & vbCrLf Loop Until EOF(1) = True Close #1 Exit Sub fine: Close #1 MsgBox Err.Description End Sub
Questo bottone mi carica il file salvato!
Private Sub Command2_Click() On Error GoTo fine Open App.Path & "\testo.txt" For Output As #1 Print #1, Text1.Text Close #1 Exit Sub fine: Close #1 MsgBox Err.Description End Sub
Questa me lo salva!!!
Ora capisco meglio il codice di lorven..MAAAAAAAAAA.....
Ho riscontrato che l'applicazione salva solo un file per volta e che una volta che ne salvo uno nuovo cancella il precedente!!! Come si fa per salvare più file e poi appena schiccio il Command2 scelgo quello che voglio aprire??
Era una delle modifiche che invitavo ad apportare!
mmmmh...allora ci devo arrivare io...Bella sfida!!!
Sono riuscita ad imparare questo...riuscirò anche a salvare più di un file! SPERO!!!
Sono riuscita ad imparare questo...riuscirò anche a salvare più di un file! SPERO!!!

Hai comunque fatto un buon lavoro, complimenti. Prova a fare da sola il resto.
Un aiutino: usa il controllo FileListBox.
Un aiutino: usa il controllo FileListBox.

Grazie grazie... un passo alla volta e si arriva in alto..
Appena riesco in quest'ultimo punto posto i risultati!!!
Appena riesco in quest'ultimo punto posto i risultati!!!
Aaaaaaaaaaaaaallora!!!
Ho fatto un'altro passettino avanti..vediamo se sono sulla buona strada per salvare i file di testo!!!
Ho un form con un bottone e una CommonDialog.
Per salvare associo al pulsante il codice:
CommonDialog1.Filter = "Text Files|*.txt"
CommonDialog1.ShowSave
NomeDelTesto = CommonDialog1.FileName
Open NomeDelTesto For Output As #1
Print #1, Text1
Close #1
Così mi salvo un file di testo!!
Che bello!! Ci sono riuscita vero?
Ma ci sono altri modi?
Ho fatto un'altro passettino avanti..vediamo se sono sulla buona strada per salvare i file di testo!!!
Ho un form con un bottone e una CommonDialog.
Per salvare associo al pulsante il codice:
CommonDialog1.Filter = "Text Files|*.txt"
CommonDialog1.ShowSave
NomeDelTesto = CommonDialog1.FileName
Open NomeDelTesto For Output As #1
Print #1, Text1
Close #1
Così mi salvo un file di testo!!
Che bello!! Ci sono riuscita vero?
Ma ci sono altri modi?


Bel lavoro. Chiaramente, anche per riprendere un'estrazione interrotta e salvata su file, si può utilizzare il CommonDialog.
Hai adottato il metodo migliore. E io volevo farti usare FileListBox, DirListBox e DriveListBox!

Volendo fare i pignoli, bisognerebbe chiedere conferma, in fase di salvataggio, nel caso di tentata sovrascrittura di un file già presente.
Vedo che scrivi tutto con un'unica Print. OK, ma fa' attenzione: quando si aprono file relativi ad estrazioni precedenti, non si deve consentire, proseguendo il gioco, l'estrazione di numeri già usciti e presenti sul file.

Già...hai ragione; però per il programma dell'estrazione ancora non ho inserito il salvataggio perchè prima ho voluto imparare come si fa!
In merito a quel programma dell'estrazione però entro un pò in crisi perchè i file che salvo sono di testo e si aprono con il programma Blocco Note, quindi per ora non so come fare per riaprire l'applicazione salvata e continuare ad estrarre i numeri restanti.
Ma cercherò di ragionarci un pò su!
In merito a quel programma dell'estrazione però entro un pò in crisi perchè i file che salvo sono di testo e si aprono con il programma Blocco Note, quindi per ora non so come fare per riaprire l'applicazione salvata e continuare ad estrarre i numeri restanti.
Ma cercherò di ragionarci un pò su!
Ci sono altri modi. Il più carino (secondo me) è usando il FileSystemObject (FSO). Se ti interessa...
E con FSO mi sa che puoi rirsolvere anche l'ultimo tuo problema (che non ho ben capito):
E con FSO mi sa che puoi rirsolvere anche l'ultimo tuo problema (che non ho ben capito):