Novità

Come fare per caricare ed elaborare simultaneamente più files esterni?

Forse ce l'ho fatta... sul serio adesso... :p

ri_disattivando il for e spostando il loop...


Codice:
Option Explicit
Sub Main
Dim sFile
Dim k,y
Dim nSorte,RetRit,RetRitMax,RetIncrRitMax,Inizio,Fine,RetFreq
'sFile = ScegliFile("c:\lunghette",".txt","lunghette.txt")
'Inizio = 1
'Fine = 8647
ReDim aRuote(1)
aRuote(1) = BA_
'aRuote(2) = CA_
'aRuote(3) = FI_
'aRuote(4) = GE_
'aRuote(5) = MI_
'aRuote(6) = NA_
'aRuote(7) = PA_
'aRuote(8) = RO_
'aRuote(9) = TO_
'aRuote(10) = VE_
'aRuote(1) = NZ_


'prova Lettura files corposi

ReDim aNum(0)

Dim fso
Dim listfile
Dim fname

Set fso = CreateObject("Scripting.FileSystemObject")
Set listfile = fso.OpenTextFile("list.txt")
Do While Not listFile.AtEndOfStream
sFile = listFile.ReadLine()

'Scrivi sFile



'--------------------------


nSorte = 1
Call Messaggio("Lettura file di testo")
'ReDim sFile(0)
'Call
'For k = 0 To 10
'If sFile <> 0 Then

Call SplitByChar("." & sFile,".",aNum)
Call StatisticaFormazioneTurbo(aNum,aRuote,nSorte,RetRit,RetRitMax,RetIncrRitMax,RetFreq,Inizio,Fine)
'Call StatisticaFormazioneTurbo(aNum,aRuote,nSorte,RetRit,RetRitMax,RetIncrRitMax,Inizio,Fine)

RetRit = RitardoCombinazioneTurbo(aRuote,aNum,nSorte,Fine)

Dim Diff
Diff = RetRitMax - RetRit

'If(RetRit >= 0) Then

'If(RetIncrRitMax > 0) Then

'If(Diff < 2 And RetIncrRitMax > 0) Then
'If(RetRit>=0) Then

Call Scrivi(sFile & " ra : " & RetRit & " rs: " & RetRitMax & " incmax: " & RetIncrRitMax & " diff: " & Diff)

'End If
'End If
Loop

If k Mod 100 = 0 Then
'Call Messaggio("Colonna : " & k)
'If ScriptInterrotto Then Exit For
'Call AvanzamentoElab(0,UBound(sFile),k)
End If
'Next
End Sub

:)

Ora non mi rimane... che provare... se funziona con + files corposi...

Grazie ancora per l'aiuto "telepatico" Luigi ;) :D
 
ciao , hai fatto un bel guazzabuglio forse perche non ti ho spiegato bene e mi sono limitato a copiarti un esempio trovato in rete

Codice:
Option Explicit
Sub Main
	Dim fso 'filesystemobject
	Dim sFile ' percorso del file
	Dim myFile ' è lo strream per leggere il file 
	Dim sLinea ' è la linea letta corrente
	
	
	sFile = "c:\Autoexec.bat"
	' istanzia il filesystemobject
	Set fso = CreateObject("Scripting.FileSystemObject")
	' usa il metodo OpenTextFile per aprire lo stream
	Set myFile = fso.OpenTextFile(sFile)
	' fa un ciclo leggendo una lnea alla volta finche lo stream non raggiunge la fine
	Do While Not myFile.AtEndOfStream
		sLinea = myFile.ReadLine()
		
		Call Scrivi(sLinea)
	Loop
	' chiude lo stream
	myFile.Close
End Sub

tutto questo (a partire da Set myFile fino a myFile.close) deve stare all'interno del ciclo for dell'array dei file da leggere ..è chiaro che il percorso del file tu lo debba leggere dall'array ...
usa nomi di variabili coerenti .. nel tuo ultimo script non ci si capiva un c... niente ...
 
Ultima modifica di un moderatore:
altro sistema per leggere i file di testo linea per linea con la nuova versione di spaziometria

Codice:
Option Explicit
Sub Main
	Dim myStream
	Dim sFile
	Dim sRiga
	
	sFile = GetDirectoryAppData & "lottouk.txt"
	
	Set myStream = GetStreamFT(sFile,vbLf)
	
	If Not myStream Is Nothing Then
		Do Until GetNextLineFT(myStream,sRiga) = False
			
			
			Call Scrivi(sRiga)
		Loop
	End If
	Call ChiudiStreamFT(myStream)
	
End Sub
 
altro sistema per leggere i file di testo linea per linea con la nuova versione di spaziometria

Codice:
Option Explicit
Sub Main
	Dim myStream
	Dim sFile
	Dim sRiga
	
	sFile = GetDirectoryAppData & "lottouk.txt"
	
	Set myStream = GetStreamFT(sFile,vbLf)
	
	If Not myStream Is Nothing Then
		Do Until GetNextLineFT(myStream,sRiga) = False
			
			
			Call Scrivi(sRiga)
		Loop
	End If
	Call ChiudiStreamFT(myStream)
	
End Sub

Ottimo :) purtroppo però per files txt molto corposi (fino a 1,5 gb di peso) su cui mi piacerebbe operare... ;) non gliela fa :p :) Anche se per frazioni di questi files medio grandi riesce a caricare il file dopo tot minuti lo fa con estrema fatica e non credo riesca a gestire una qualsiasi elaborazione o scritta in output. La soluzione penso risieda nel costruire prima o poi uno script che generi in run time appunto le lunghette in decina diversa desiderate e nell'evitare appunto il caricamento di queste attraverso files txt troppo pesanti. A tale scopo ho riprovato a prendere in mano il post relativo e ad estendere la tua dritta ma con scarsissimi risultati... Ti chiedo appena puoi di darci un occhio perfavore ;) Grazie di tutto luigi e buona serata.
 
Ultima modifica:
con la nuova versione che tra poco sarà disponibile (1.4.98) prova questo script , io l'ho provato con un file da 700 mb
e funziona bene , dovrebbe farlo anche con file piu grandi.
Il percorso del file da leggere te lo fa scegliere automaticamente
Codice:
Option Explicit
Sub Main
	Dim myStream
	Dim sFile
	Dim sRiga
	Dim i
	Dim nRigheMaxDaSccrivere
	' per evitare un sovraccarico non scrive piu di tot righe
	nRigheMaxDaSccrivere = 10000
	sFile = ScegliFile(GetDirectoryAppData,".txt")
	' i file di testo possono essere interpretati in modi diversi
	' dipende dal carattere di fine riga , fare le prove e
	' remmare una delle due righe in funzione delle necessita
	Set myStream = GetStreamFT(sFile,vbLf)
	'Set myStream = GetStreamFT(sFile,vbCrLf)
	If Not myStream Is Nothing Then
		Do Until GetNextLineFT(myStream,sRiga) = False
			i = i + 1
			If i <= nRigheMaxDaSccrivere Then
				Call Scrivi(sRiga)
				
			End If
			If i Mod 100 = 0 Then 	
				Call Messaggio(i)
				Call AvanzamentoElab(0,myStream.GetFileLen,myStream.GetCurrentOffset)
			End If
			If ScriptInterrotto Then Exit Do
			
		Loop
	End If
	Call ChiudiStreamFT(myStream)
	MsgBox "Fine. Righe lette :  " & i
End Sub
 
Ultima modifica di un moderatore:
con la nuova versione che tra poco sarà disponibile (1.4.98) prova questo script , io l'ho provato con un file da 700 mb
e funziona bene , dovrebbe farlo anche con file piu grandi.
Il percorso del file da leggere te lo fa scegliere automaticamente
Codice:
Option Explicit
Sub Main
	Dim myStream
	Dim sFile
	Dim sRiga
	Dim i
	Dim nRigheMaxDaSccrivere
	' per evitare un sovraccarico non scrive piu di tot righe
	nRigheMaxDaSccrivere = 10000
	sFile = ScegliFile(GetDirectoryAppData,".txt")
	' i file di testo possono essere interpretati in modi diversi
	' dipende dal carattere di fine riga , fare le prove e
	' remmare una delle due righe in funzione delle necessita
	Set myStream = GetStreamFT(sFile,vbLf)
	'Set myStream = GetStreamFT(sFile,vbCrLf)
	If Not myStream Is Nothing Then
		Do Until GetNextLineFT(myStream,sRiga) = False
			i = i + 1
			If i <= nRigheMaxDaSccrivere Then
				Call Scrivi(sRiga)
				
			End If
			If i Mod 100 = 0 Then 	
				Call Messaggio(i)
				Call AvanzamentoElab(0,myStream.GetFileLen,myStream.GetCurrentOffset)
			End If
			If ScriptInterrotto Then Exit Do
			
		Loop
	End If
	Call ChiudiStreamFT(myStream)
	MsgBox "Fine. Righe lette :  " & i
End Sub

Qui ti sei davvero superato! :D
Carica... qualsiasi... cosa!!!!!!!!!!
Spettacolareeeeeeeeeeeeeee!!!
Non sei u m a n o. :)
 
lo so , pero scarica l'ultima versione lo stesso ..ricordati che i file di testo prodotti in windows vanno letti con vbCrLf (i file di colonne esportate hanno appunto vbCrlf come terminatore di riga) .. nell'esempio mio usavo vbLf per altri motivi
 
Ultima modifica di un moderatore:
lo so , pero scarica l'ultima versione lo stesso ..ricordati che i file di testo prodotti in windows vanno letti con vbCrLf (i file di colonne esportate hanno appunto vbCrlf come terminatore di riga) .. nell'esempio mio usavo vbLf per altri motivi

Okkey

.98

Appena la metti ;)

'Notte e GRAZIE ancora Grandissimooo!!! :)
 
ci dovrebeb gia essere .. ciao buona notte

Buongiorno Luigi! :) Dunque ho scaricato la versione nuova .98 ma non me la fa installare nemmeno disinstallando temporaneamente gli antivirus :( Inoltre... con la versione .97 provando con solo... :p 360 mln di 7ine condizionate in decina diversa g7 dopo averle sviluppate tutte correttamente in ca 1 ora al momento di salvare il tutto sia come file di configurazione sia come file txt mi da questi due errori che ti riporto... qui sotto... in immagini... Spero davvero tanto che con la .98 senza problemi di installazione questi salvataggi siano consentiti ;) Grazie ancora mito. Uno dei tuoi fan più sfegatati :D Tom ps: Ma quando ti decidi a fare queste magliette e/o a fare qualche app per android e ios ? ;) Io e molti/e altri/e tuoi/e fan ti compreremmo sicuramente tutti e tre i tipi :o Buona giornata grandissimooooooooooooo



errore 1

problema-esportazione-txt-settine-decina-diversa.jpg

errore 2

problema-esportazione-txt-settine-decina-diversa-overflow.jpg
 
Ultima modifica:
ciao Tom , dei problemi di installazione non so nulla , la versione non c'entra niente.
Per il resto 360 milioni di colonne sono troppi per non parlare dei 7 miliardi del sistema integrale ..fatti venire qualche idea meno balzana
 
con la nuova versione che tra poco sarà disponibile (1.4.98) prova questo script , io l'ho provato con un file da 700 mb
e funziona bene , dovrebbe farlo anche con file piu grandi.
Il percorso del file da leggere te lo fa scegliere automaticamente
Codice:
Option Explicit
Sub Main
	Dim myStream
	Dim sFile
	Dim sRiga
	Dim i
	Dim nRigheMaxDaSccrivere
	' per evitare un sovraccarico non scrive piu di tot righe
	nRigheMaxDaSccrivere = 10000
	sFile = ScegliFile(GetDirectoryAppData,".txt")
	' i file di testo possono essere interpretati in modi diversi
	' dipende dal carattere di fine riga , fare le prove e
	' remmare una delle due righe in funzione delle necessita
	Set myStream = GetStreamFT(sFile,vbLf)
	'Set myStream = GetStreamFT(sFile,vbCrLf)
	If Not myStream Is Nothing Then
		Do Until GetNextLineFT(myStream,sRiga) = False
			i = i + 1
			If i <= nRigheMaxDaSccrivere Then
				Call Scrivi(sRiga)
				
			End If
			If i Mod 100 = 0 Then 	
				Call Messaggio(i)
				Call AvanzamentoElab(0,myStream.GetFileLen,myStream.GetCurrentOffset)
			End If
			If ScriptInterrotto Then Exit Do
			
		Loop
	End If
	Call ChiudiStreamFT(myStream)
	MsgBox "Fine. Righe lette :  " & i
End Sub

Ciao Luigi, credo di essere riuscito ad implementare questo tuo nuovo super "motore" in uno script che analizza qualcosa però purtroppo la riga letta ho verificato che ha dei caratteri spazio in eccesso... Andrebbe ripulita dagli spazi finali in eccedenza... dopo che è stata generata dalla sezione sistemi condizionati ma non so come fare. Ci vorrebbe qualcosa simile alla funzione "trim" ecc...

Codice:
Option Explicit
Sub Main
	Dim myStream
	Dim sFile
	Dim sRiga
	Dim i
	
	Dim k
	
	Dim RetRit,RetRitMax,RetIncrRitMax,RetFreq,Inizio,Fine
	
	Dim nsorte
	
	Dim nRigheMaxDaSccrivere
	' per evitare un sovraccarico non scrive piu di tot righe
	nRigheMaxDaSccrivere = 1000
	sFile = ScegliFile(GetDirectoryAppData,".txt")
	' i file di testo possono essere interpretati in modi diversi
	' dipende dal carattere di fine riga , fare le prove e
	' remmare una delle due righe in funzione delle necessita
	Set myStream = GetStreamFT(sFile,vbLf)
	'Set myStream = GetStreamFT(sFile,vbCrLf)
	If Not myStream Is Nothing Then
		Do Until GetNextLineFT(myStream,sRiga) = False
			i = i + 1
			If i <= nRigheMaxDaSccrivere Then
			
Call Scrivi("*"&sRiga&"*")
				
'analizza riga
				
				

If sRiga <> "" Then
ReDim aNum(0)
Call SplitByChar(" " & sRiga," ",aNum)
End If




'Inizio = 1
'Fine = 8647
ReDim aRuote(2)
'aRuote(1) = BA_
'aRuote(2) = CA_
aRuote(1) = FI_
aRuote(2) = GE_
'aRuote(5) = MI_
'aRuote(6) = NA_
'aRuote(7) = PA_
'aRuote(8) = RO_
'aRuote(9) = TO_
'aRuote(10) = VE_
'aRuote(1) = NZ_


nsorte = 1
Call Messaggio("Lettura file di testo")

'Call SplitByChar(" " & sRiga," ",aNum)
Call StatisticaFormazioneTurbo(aNum,aRuote,nsorte,RetRit,RetRitMax,RetIncrRitMax,RetFreq,Inizio,Fine)
'Call StatisticaFormazioneTurbo(aNum,aRuote,nSorte,RetRit,RetRitMax,RetIncrRitMax,Inizio,Fine)

RetRit = RitardoCombinazioneTurbo(aRuote,aNum,nsorte,Fine)

Dim Diff
Diff = RetRitMax - RetRit


Call Scrivi(sRiga & " ra : " & RetRit & " rs: " & RetRitMax & " incmax: " & RetIncrRitMax & " diff: " & Diff)












				
				
'fine analisi riga
				
				
			End If
			If i Mod 100 = 0 Then 	
				Call Messaggio(i)
				Call AvanzamentoElab(0,myStream.GetFileLen,myStream.GetCurrentOffset)
			End If
			If ScriptInterrotto Then Exit Do
			
		Loop
	End If
	Call ChiudiStreamFT(myStream)
	MsgBox "Fine. Righe lette :  " & i
End Sub

Un'altra cosa che vorrei capire è cosa dover mettere al posto di nRigheMaxDaSccrivere per considerare tutto il file da leggere e non solo una porzione.

La conferma che ci sono spazi in eccesso nella riga sriga estrapolata è derivata dall'output mettendo come segnalini di verifica due asterischi all'inizio e alla fine del valor sriga:

*01 11 21 31 41 51 61
*


Grazie ancora Luigi e buona notte :)
 
Ultima modifica:
ciao Tom , è ovvio che in quel valore devi mettere un valore adatto a contenere tutte le righe che vuoi scrivere. Certo non ho idea a cosa possa sercire scrivere in output tutte le colonne dello sviluppo ..contento tu ... per i lresto ti servirebbe una funzione tipo trim .. fammici pensare magari mi viene in mente .. ah gia esiste proprio trim ...
 
ciao Tom , è ovvio che in quel valore devi mettere un valore adatto a contenere tutte le righe che vuoi scrivere. Certo non ho idea a cosa possa sercire scrivere in output tutte le colonne dello sviluppo ..contento tu ... per i lresto ti servirebbe una funzione tipo trim .. fammici pensare magari mi viene in mente .. ah gia esiste proprio trim ...

Usando trim sicuramente in modo sbagliato... :rolleyes:

prima di trim:

*01 11 21 31 41 51 61
*
dopo trim:

*01 11 21 31 41 51 61
*

Due gemelli siamesi :D

Per quanto riguarda il valutare tutte le righe di un file senza dover mettere un valore fisso approssimativo che per altro varierebbe da file txt a file txt... pensavo a qualcosa tipo ubound per intenderci... o qualcosa che significasse "fine del file..." E' ovvio che lo voglio considerare tutto e non una parte... ma forse mi sfugge anche qui qualcosa... anzi sicuramente... ;) Ciao :)

ps: Trim l'ho usato così.. con e senza parentesi tonde...

Codice:
Call Scrivi ("prima:")
Call Scrivi 
Call Scrivi("*"&sRiga&"*")

Trim sRiga

Call Scrivi ("dopo:")
Call Scrivi  
Call Scrivi("*"&sRiga&"*")
 
Ultima modifica:
cia Tom , mamma mia povero me ... trim è un funzione ... le funzioni restituiscono qualcosa ...quel qualcosa che restituiscono
tu devi essere pronto a prenderlo in consegna .. nella fattispecie con una variabile

stringaTrimmata = trim(stringa)

quel valore di cui parli serve unicamente a non scrivere le righe del file in output . .. è ovvio che tu debba assoggettare
tutte le colonne lette dal file al criterio che applicherai pero dovrai scrivere in output solo le informazioni necessarie .. se pensi di poter scrivere migliaia e migliaia di righe stai fresco ..e pure pootendo che ci faresti tu essere umano con un file da migliaia di righe da leggere ?
 
cia Tom , mamma mia povero me ... trim è un funzione ... le funzioni restituiscono qualcosa ...quel qualcosa che restituiscono
tu devi essere pronto a prenderlo in consegna .. nella fattispecie con una variabile

stringaTrimmata = trim(stringa)

quel valore di cui parli serve unicamente a non scrivere le righe del file in output . .. è ovvio che tu debba assoggettare
tutte le colonne lette dal file al criterio che applicherai pero dovrai scrivere in output solo le informazioni necessarie .. se pensi di poter scrivere migliaia e migliaia di righe stai fresco ..e pure pootendo che ci faresti tu essere umano con un file da migliaia di righe da leggere ?

:)

Devo aver mangiato troppo riso con radicchio rosso e curcuma perchè...

anche così...

Codice:
Call Scrivi ("prima:")
Call Scrivi 
Call Scrivi("*"&sRiga&"*")

Dim Stringatrimmata

Stringatrimmata = Trim(sRiga)

Call Scrivi ("dopo:")
Call Scrivi  
Call Scrivi("*"&Stringatrimmata&"*")

ottengo i due siamesi... :D :confused: :rolleyes:

ciao :o
 
ad onor del vero Tom sono andato a vedere per curiosita come esporta i file txt il modulo dei sistemi condizionati , ho notato che non è vero che ci sono degli spazi ... ma tu il file da dove lo hai preso ? Come si vede pure dall'imagine se ci fossero degli spazi sarebbero evidenziati in blu come il testo ...


image hosting
 
comunque l'ultimo codice che hai scritto è giusto , l'ho testato cosi

Codice:
Sub Main
	sriga = "e   "
	Call Scrivi("prima:")
	Call Scrivi
	Call Scrivi("*" & sRiga & "*")
	Dim Stringatrimmata
	Stringatrimmata = Trim(sRiga)
	Call Scrivi("dopo:")
	Call Scrivi
	Call Scrivi("*" & Stringatrimmata & "*")
End Sub
 
Ultima modifica di un moderatore:

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 21 gennaio 2025
    Bari
    78
    09
    70
    03
    23
    Cagliari
    32
    88
    30
    13
    45
    Firenze
    87
    23
    15
    39
    86
    Genova
    71
    48
    67
    59
    23
    Milano
    58
    50
    80
    85
    29
    Napoli
    90
    81
    79
    82
    62
    Palermo
    70
    33
    90
    05
    10
    Roma
    15
    71
    55
    85
    76
    Torino
    89
    09
    18
    33
    69
    Venezia
    44
    80
    82
    73
    58
    Nazionale
    80
    25
    13
    63
    17
    Estrazione Simbolotto
    Bari
    39
    36
    34
    14
    31
Indietro
Alto