12/09/11 11:05
Ultimo
Sto cercando di estrapolare i dati presenti in un file.txt (storico01-oggi.txt) il quale è un archivio estrazioni del lotto che scarico dal sito lottomaticaitalia.it
Quì sotto ho inserito un pezzo dell'archivio in formato testo :
2001/01/03 BA 26 59 60 67 17
2001/01/03 CA 13 83 16 41 68
2001/01/03 FI 33 87 76 7 10
2001/01/03 GE 5 38 3 65 72
2001/01/03 MI 62 30 7 61 52
2001/01/03 NA 25 38 15 31 86
2001/01/03 PA 15 56 89 85 63
2001/01/03 RM 41 17 80 48 9
2001/01/03 TO 42 16 12 60 20
2001/01/03 VE 51 84 76 42 90
2001/01/08 BA 84 80 40 15 9
2001/01/08 CA 6 87 80 25 60
2001/01/08 FI 72 68 79 84 88
2001/01/08 GE 38 54 67 3 81
2001/01/08 MI 61 1 16 31 56
2001/01/08 NA 19 43 29 61 34
2001/01/08 PA 16 15 66 1 44
2001/01/08 RM 69 77 42 53 27
2001/01/08 TO 90 50 20 59 3
2001/01/08 VE 59 69 72 60 70
2001/01/10 BA 14 87 29 75 76
2001/01/10 CA 86 13 31 82 84
2001/01/10 FI 76 83 63 84 27
2001/01/10 GE 9 49 68 47 70
2001/01/10 MI 35 58 31 30 79
2001/01/10 NA 31 55 72 54 11
2001/01/10 PA 30 58 87 43 16
2001/01/10 RM 8 33 37 61 15
2001/01/10 TO 89 51 10 70 84
2001/01/10 VE 75 53 38 65 27
2001/01/13 BA 57 64 32 84 18
2001/01/13 CA 66 4 78 68 3
2001/01/13 FI 44 76 77 12 35
2001/01/13 GE 63 19 60 68 76
2001/01/13 MI 50 46 69 34 2
2001/01/13 NA 81 35 29 41 86
2001/01/13 PA 90 4 74 67 19
2001/01/13 RM 83 75 31 32 2
2001/01/13 TO 87 52 53 45 40
2001/01/13 VE 5 55 64 65 28
Quì sotto inserisco la funzione che sto cercando di implementare per estrapolare i dati separati, in modo da poterci lavorare in seguito:
In pratica devo caricare degli Array o liste separati per ogni dato, come se
fossero le colonne di un database.
Questa parte di codice non so se sia corretta, per separare le sottostrighe
di ogni riga letta:
Nuova versione usando le Liste:
Quì sotto inserisco la versione funzionante senza l'uso della funzione Split(" ".
Ringrazio anticipatamente per un vostro eventuale aiuto
Quì sotto ho inserito un pezzo dell'archivio in formato testo :
2001/01/03 BA 26 59 60 67 17
2001/01/03 CA 13 83 16 41 68
2001/01/03 FI 33 87 76 7 10
2001/01/03 GE 5 38 3 65 72
2001/01/03 MI 62 30 7 61 52
2001/01/03 NA 25 38 15 31 86
2001/01/03 PA 15 56 89 85 63
2001/01/03 RM 41 17 80 48 9
2001/01/03 TO 42 16 12 60 20
2001/01/03 VE 51 84 76 42 90
2001/01/08 BA 84 80 40 15 9
2001/01/08 CA 6 87 80 25 60
2001/01/08 FI 72 68 79 84 88
2001/01/08 GE 38 54 67 3 81
2001/01/08 MI 61 1 16 31 56
2001/01/08 NA 19 43 29 61 34
2001/01/08 PA 16 15 66 1 44
2001/01/08 RM 69 77 42 53 27
2001/01/08 TO 90 50 20 59 3
2001/01/08 VE 59 69 72 60 70
2001/01/10 BA 14 87 29 75 76
2001/01/10 CA 86 13 31 82 84
2001/01/10 FI 76 83 63 84 27
2001/01/10 GE 9 49 68 47 70
2001/01/10 MI 35 58 31 30 79
2001/01/10 NA 31 55 72 54 11
2001/01/10 PA 30 58 87 43 16
2001/01/10 RM 8 33 37 61 15
2001/01/10 TO 89 51 10 70 84
2001/01/10 VE 75 53 38 65 27
2001/01/13 BA 57 64 32 84 18
2001/01/13 CA 66 4 78 68 3
2001/01/13 FI 44 76 77 12 35
2001/01/13 GE 63 19 60 68 76
2001/01/13 MI 50 46 69 34 2
2001/01/13 NA 81 35 29 41 86
2001/01/13 PA 90 4 74 67 19
2001/01/13 RM 83 75 31 32 2
2001/01/13 TO 87 52 53 45 40
2001/01/13 VE 5 55 64 65 28
Quì sotto inserisco la funzione che sto cercando di implementare per estrapolare i dati separati, in modo da poterci lavorare in seguito:
'Funzione che esegue la lettura e il caricamento dell'Archivio estrazioni in formato testo. Public Sub Carica_Archivio_Estrazioni(ByVal Ruota As String) 'Aggiungi l'OpenFileDialog Dim Open As New OpenFileDialog 'metti il formato Open.Filter = " Files di Testo|*.txt" 'Metti che si apre l'OpenFileDialog e apra If Open.ShowDialog = Windows.Forms.DialogResult.OK Then Dim lettura As New IO.StreamReader(Open.FileName) 'Cancello ListaArchivio LstArchivio.Clear() 'Una stringa che rappresenta ogni singola riga del file Dim Riga As String ' Variabile contatore Dim Conta As Int16 = -1 'Imposta il testo della label di stato LabelAvvisi.Text = "Apertura del file in corso..." 'Fa rispettare l'ordine delle istruzioni Application.DoEvents() 'Attende 3 secondi Thread.Sleep(3000) 'Fa rispettare l'ordine delle istruzioni Application.DoEvents() 'Finchè non si raggiunge la fine del file si continua 'a leggere While Not lettura.EndOfStream 'Leggiamo una linea di file (S) Riga = lettura.ReadLine 'Se la linea è diversa da una riga vuota If Riga <> Nothing Then ' Incremento contatore Conta += 1 'Splitto la riga Dim vettore_riga() As String vettore_riga = Riga.Split(" ") 'Carico le ListeColonne degli elementi splittati DataArchivio(Conta) = vettore_riga(0) ' Quì mi da errore RuoteArchivio(Conta) = vettore_riga(1) PrimoEstr(Conta) = vettore_riga(2) SecondoEstr(Conta) = vettore_riga(3) TerzoEstr(Conta) = vettore_riga(4) QuartoEstr(Conta) = vettore_riga(5) QuintoEstr(Conta) = vettore_riga(6) 'Carico la ListaArchivio LstArchivio.Add(Riga) End If End While 'Chiude il file lettura.Close() LabelAvvisi.Text = "File aperto, righe combinazioni lette = " & Conta + 1 Me.TextBoxDataEstrazione.Text = DataArchivio(Conta) End If End Sub
In pratica devo caricare degli Array o liste separati per ogni dato, come se
fossero le colonne di un database.
Questa parte di codice non so se sia corretta, per separare le sottostrighe
di ogni riga letta:
'Splitto la riga Dim vettore_riga() As String vettore_riga = Riga.Split(" ") 'Carico le ListeColonne degli elementi splittati DataArchivio(Conta) = vettore_riga(0) ' Quì mi da errore RuoteArchivio(Conta) = vettore_riga(1) PrimoEstr(Conta) = vettore_riga(2) SecondoEstr(Conta) = vettore_riga(3) TerzoEstr(Conta) = vettore_riga(4) QuartoEstr(Conta) = vettore_riga(5) QuintoEstr(Conta) = vettore_riga(6)
Nuova versione usando le Liste:
'Splitto la riga Dim vettore_riga(0 To 6) As String vettore_riga = Riga.Split(" ") 'Carico le ListeColonne degli elementi splittati DataArchivio.Add(vettore_riga(0)) RuoteArchivio.Add(vettore_riga(1)) PrimoEstr.Add(vettore_riga(2)) SecondoEstr.Add(vettore_riga(3)) TerzoEstr.Add(vettore_riga(4)) QuartoEstr.Add(vettore_riga(5)) QuintoEstr.Add(vettore_riga(6))
Quì sotto inserisco la versione funzionante senza l'uso della funzione Split(" ".
'Funzione che esegue la lettura e il caricamento dell'Archivio estrazioni in formato testo. Public Sub Carica_Archivio_Estrazioni(ByVal Ruota As String) 'Se la lista Archivio è vuota If LstArchivio.Count < 1 Then 'Aggiungi l'OpenFileDialog Dim Open As New OpenFileDialog 'metti il formato Open.Filter = " Files di Testo|*.txt" 'Metti che si apre l'OpenFileDialog e apra If Open.ShowDialog = Windows.Forms.DialogResult.OK Then Dim lettura As New IO.StreamReader(Open.FileName) 'Cancello ListaArchivio LstArchivio.Clear() 'Una stringa che rappresenta ogni singola riga del file Dim Riga As String ' Variabile contatore Dim Conta As Int16 = -1 'Imposta il testo della label di stato LabelAvvisi.Text = "Apertura del file in corso..." 'Fa rispettare l'ordine delle istruzioni Application.DoEvents() 'Attende 3 secondi Thread.Sleep(3000) 'Fa rispettare l'ordine delle istruzioni Application.DoEvents() 'Finchè non si raggiunge la fine del file si continua 'a leggere While Not lettura.EndOfStream 'Leggiamo una linea di file (S) Riga = lettura.ReadLine 'Se la linea è diversa da una riga vuota If (Riga Is Nothing) Or (Riga = "") Or (Riga.Length < 10) Then 'Se la riga è vuota la salta. Else ' Incremento Conta Conta += 1 Dim Carattere As String = "" Dim NuovaRiga As String = "" Dim Contatore As Int16 = 0 'Con un ciclo For Each verifico tutti i caratteri della stringa Riga For Each c As Char In Riga If c = " "c Or c = " "c Then Contatore += 1 End If Carattere = CStr(c) If Carattere = " " Then Contatore += 1 End If If c = " "c Or c = " "c Or Carattere = " " Then 'Carico le Liste_Colonne dei dati Select Case Contatore Case 1 DataArchivio.Add(NuovaRiga) Case 2 RuoteArchivio.Add(NuovaRiga) Case 3 PrimoEstr.Add(NuovaRiga) Case 4 SecondoEstr.Add(NuovaRiga) Case 5 TerzoEstr.Add(NuovaRiga) Case 6 QuartoEstr.Add(NuovaRiga) Case 7 QuintoEstr.Add(NuovaRiga) End Select 'Cancella la stringa NuovaRiga = "" Else 'Forma la nuova stringa NuovaRiga += Carattere End If 'Ci interessano solo i primi sette Dati della stringa Riga If Contatore = 7 Then Exit For End If Next c 'Carico la ListaArchivio LstArchivio.Add(Riga) End If End While 'Chiude il file lettura.Close() 'Chiama la funzione InserisciDati IserisciDati(Ruota) LabelAvvisi.Text = "File aperto, righe combinazioni lette = " & Conta + 1 Me.TextBoxDataEstrazione.Text = DataArchivio(Conta) End If 'Se la Lista Archivio è già caricata Else 'Chiama la funzione InserisciDati IserisciDati(Ruota) End If End Sub
Ringrazio anticipatamente per un vostro eventuale aiuto
Ultima modifica effettuata da Ultimo 14/09/11 10:38
If ok Then GOTO Avanza else GOTO Inizia