Novità

SpeedTest & SpeedUp

no no .. la strada è quella di ottenere gli stessi dati della famosa lista della statistica veloce e poi elaborare quelli.
Tra le altre cose questa necessita si presta bene per fare altri esempi sulle collection che mi aveva chiesto Mike.
Vediamo di analizzare insieme la soluzione del problema.
Abbiamo detto che per prima cosa ci servirebeb quella famosa lista. Benissimo andiamola a vedere , notiamo che è composta da una serie di righe e da una serie di colonne.
In definitiva la nostra lista è un contentore , le righe sono gli elementi contenuti e le colonne sono le proprieta di ciascun elemento.
Con questa breve analisi abbiamo gia definito la struttura della classe che conterra tutti i valori di riga.
le colonne di ogni riga come abbiamo detto sono le proprieta della nostra classe , vediamo che la lista mostra queste proprietà :

Num
Estrazione
Ruota
Numeri
Ritardo
Sortita
Estratti

quindi possiamo creare la classe che le contiene e che poi inseriremo nella collection. Al termine quindi nella collection avremo una serie di classi esattamente come avevamo una serie di righe nella lista delle statistiche. Ogni classe ha le sue proprieta cosi come ogni riga aveva le sue colonne.

Creiamo la classe la chiameremo ClsRiga

Codice:
class clsRiga
  Dim num ' sara un intero ed indica il numero progressivo
  Dim Estrazione ' sara un intero e specifica l'estrazione di uscita
  Dim DataEst ' sara una stringa che contiene la data di uscita
  Dim Ruota ' sara un intero e specifica il numero della ruota di uscita
  Dim Numeri ' sarà una string a come nella lista con i numeri dell'estrazione
  Dim Ritardo ' sara un intero che specifica il ritardo 
  Dim Sortita ' una stringa che specifica l'esito
  Dim Estratti ' una stringa che contiene i numeri  sortiti

end classe

benissimo il resto della funzione la scriviamo insieme non ti preoccupare , dimmi se fin'ora ti è chiara la logica che ho impostato.
 
Ultima modifica di un moderatore:
Ciao, a tutti, purtroppo questa logica di scriptare va fuori dalla logica finora a noi conosciuta, e quindi gli esempi con un progetto reale forse aiuterebbe ulteriormente a comprenderne meglio tutti i passaggi.

Vi seguo....

Mike
 
bene , allora ora butiamo giu lo script , Mike dimmi se fin'ora le cose ti sono chiare , come dice Rubino abbiamo semplicemente creato una struttura di dati che identifica il conenuto di una riga la stessa che era presente nella lista delle statistiche , abbiamo intenzione di inserire tutte queste righe in un contenitore e poi successivamente elabolarle per ottenere il risultato voluto da rubino.
 
Rubino sei sulla strada giusta ,aspettiamo una breve conferma di Mike cosi poi continuiamo ... tanto è facile.
 
Nel frattempo riepiloghiamo la necessita

Abbiamo bisogno di una funzione alla quale passseremo i seguenti parametri

NumeriDaValutare
RuoteDiRicerca
InizioRange
FineRange
Sorte

questa funzione dovra scorrere le estrazioni nel range da noi impostato , vedere quando i numeri da noi scelti sono usciti , memorizzare
l'estrazione di uscita , la ruota , i numeri estratti , il ritardo attuale.
Tutte le informazioni che trova le inserira in una collection sottoforma di ogetti clsRiga
A noi ci verra restituita proprio questa collection con tutto il suo contenuto

poi creremo un'altra funzione che in ingresso riceve la collection e in uscita ci ritorna le volte consecutive che la tale
combinazione è uscita ,poi mano mano che scriviamo ci allineamo sulle necessita che dobbiamo implementare
 
Immagine6.png


è chiaro tutto fino a qui ?
 
Ciao, Luigi, Rubino, mi piacerebbe rispondere di SI,ma ancora devo fare ordine(anche xchè stasera mi tocca andare al lavoro), comunque(qualcosa capisco) andate pure avanti, domani mattina mi leggerò il tutto e vedere di mettere ordine.

Bravo... Rubino sei il nostro capofila.

P.s. In seconda lettura tutto + chiaro, comincia a farsi interessante.


Mike
 
Ultima modifica:
ok noi contiinuiamo allora , vedrai che siccome ti è chiaro lo scopo non farai fatica a seguirwe il procedimento ... buon lavoro !
 
come dicevo continuiamo , ecco la funzione che alimenta la collection , è molto semplice e ben commentata penso
che non ci siano difficoltà , poi per fare un esempio intato l'ho richiamata nella sub main per mostrare la lista che voleva rubino ...
ditemi se vi è tutto chiaro fin'ora ...


Codice:
Option Explicit
Class clsRiga
	Dim Num ' sara un intero ed indica il numero progressivo
	Dim Estrazione ' sara un intero e specifica l'estrazione di uscita
	Dim DataEst ' sara una stringa che contiene la data di uscita
	Dim Ruota ' sara un intero e specifica il numero della ruota di uscita
	Dim sNumeri ' sarà una string a come nella lista con i numeri dell'estrazione
	Dim Ritardo ' sara un intero che specifica il ritardo
	Dim Sortita ' una stringa che specifica l'esito
	Dim Estratti ' una stringa che contiene i numeri  sortiti
End Class
' questa funzione restuirà la lista delle uscite di una data combinazione
' per una data sorte sulle ruote specificate. Le ruote verrano considerate
' separate come avviene nella funzione StatisticaVeloce
Function GetListaUscite(aNum,aRuote,Inizio,Fine,Sorte)
	Dim CollRighe ' sarà la collection che contiene el righe della lista
	Dim cRiga ' oggetto Riga verra istanziato un nuovo oggetto ogni volta
	' che avviene l'esito cercato. L'oggetto verra poi inserito in una collection
	Dim IdEst,R,NumEsiti ' variabili generiche
	Dim sRetEsito,sRetEstratti ' ritornano dalla funzione VerificaEsito
	' per prima cosa creiamo la collection e cioè il nostro contenitore , quello che emula in memoria
	' la lista dei risultati ottenuta dalla funzione statistica veeloce
	Set CollRighe = GetNewCollection ' istanzio la collection
	' in questo momento la collection è appena istanziata quindi è vuota
	'iniziamo il ciclo sulle estrazioni per analizzare il range
	For IdEst = Inizio To Fine
		'il ciclo delle ruote è interno
		For R = 1 To 12
			If aRuote(R) Then ' aRuote è un array di flag da 1 a 12 , se il flag è true la ruota  verrà analizzata
				ReDim aR(1) '  ricordiamoci che dobbiamo gestire le ruote separatamente come fa la funzione StatistcaVeloce
				aR(1) = R
				' con la funzione verifica esito andiamo a valutare i nostri numeri sulla ruota R
				If VerificaEsito(aNum,aR,IdEst,Sorte,1,,sRetEsito,,sRetEstratti)	Then
					'è sortito un esito quindi :
					NumEsiti = NumEsiti + 1	'incrementiamo la quantita di uscite
					Set cRiga = New clsRiga	'istanziamo un nuovo oggetto clsRiga con la parola chiave New
					' ora valoriziamo le proprietà dell'oggetto che abbiamo appena istanziato
					' abbiamo visto che per accedere alle proprietà si usa la sintassi
					' NomeOgetto.Proprieta
					' tutte le proprieta da valorizzare o gia le sappiamo o si possono calcolare
					' con funzioni degli scirpt
					cRiga.Num = NumEsiti
					cRiga.Estrazione = IdEst
					cRiga.DataEst = DataEstrazione(IdEst)
					cRiga.Ruota = R
					cRiga.sNumeri = StringaEstratti(IdEst,R)
					cRiga.Ritardo = RitardoCombinazione(aR,aNum,Sorte,IdEst-1,,,Inizio)
					cRiga.Sortita = sRetEsito
					cRiga.Estratti = sRetEstratti
					' ora che il nostro oggetto è pronto lo inseriamo nella collection con il metodo Add
					' notiamo che questa volta visto che non ci serve non associamo nessuna chiave all'oggetto
					CollRighe.Add cRiga
				End If
			End If
		Next
	Next
	' quando la funzione ha terminato il suo lavoro nella nostra collection ci sono tutte le sortite registrate
	' percio la nostra funzione torna proprio la collection
	Set GetListaUscite = CollRighe ' notare che siccome stimao valorizzando un oggetto si deve usare la parola chiave SET
End Function
Sub Main

	Dim  Inizio,Fine,Sorte ' variabili per l'analisi range e sorte 
	Dim Lista  ' sarà valorizzata con il risultato della funzione GetListaUscite
	ReDim aNum (2) ' numeri in gioco .. adesso per esempio mettiamo 2 numeri ma possiamo metterne quanti vogliamo
	ReDim aRuote (12) ' Ruote in gioco , notare che qusto è un array di flag , non di numeri
				' cioe non contiene i numeri delle Ruote ma il flag a true sull'elemento corrispondente
				' alla ruota voluta 
	Dim clsRiga ' serve per ciclare sulla lista dei risultati ovvero la collection che ritorna da GetListaUscite
	
	' parametri di ricerca
	Inizio = 1  
	Fine = EstrazioniArchivio
	' usiamo i numeri dell'esempio di rubino
	aNum (1)= 6
	aNum(2) = 88
	
	aRuote( NA_) = True
	aRuote( PA_) = True
	
	Sorte = 2 
	
	' creiamo la lista dei risultati , notare che da ora in poi bastera questa 
	' chiamata per avere tutte quelle informazioni
	Set Lista = GetListaUscite(aNum,aRuote,Inizio,Fine,Sorte)
	
	
	' ora come esempio intanto mostriamo la lista come la funzione statistica veloce 
	ReDim aV(8)
	aV(1)= "Numero"
	aV(2)= "Estrazione"
	aV(3)= "Data"
	aV(4)= "Ruota"
	aV(5)= "Numeri"
	aV(6)= "Ritardo"
	aV(7)= "Sortita" 
	aV(8)= "Estratti"
	
	Call InitTabella (aV )
	
	For Each clsRiga In Lista
		ReDim aV(8)
		aV(1)= clsRiga.Num
		aV(2)= clsRiga.Estrazione
		aV(3)= clsRiga.DataEst
		aV(4)= NomeRuota(clsRiga.Ruota)
		aV(5)= clsRiga.sNumeri
		aV(6)= clsRiga.Ritardo
		aV(7)= clsRiga.Sortita 
		aV(8)= clsRiga.Estratti
		Call AddRigaTabella (aV )

	Next
	Call CreaTabella 
	 
	
	
End Sub
 
Ultima modifica di un moderatore:
ho notato che la funzione statistica veloce quando mostra i dettagli nel campo ritardo calcola il ritardo sulle ruote in gioco considerandole insieme , io nello script precedente le consideravo separate , non so rubino scegli tu come fare , volendo possiamo inserire
un parametro nella funzione GetLista per modificarne il comportamento a seconda di quello che gli passiamo , senno lo script diverso è questo che da gli stessi dati di StatisticaVeloce

Codice:
Option Explicit
Class clsRiga
	Dim Num ' sara un intero ed indica il numero progressivo
	Dim Estrazione ' sara un intero e specifica l'estrazione di uscita
	Dim DataEst ' sara una stringa che contiene la data di uscita
	Dim Ruota ' sara un intero e specifica il numero della ruota di uscita
	Dim sNumeri ' sarà una string a come nella lista con i numeri dell'estrazione
	Dim Ritardo ' sara un intero che specifica il ritardo
	Dim Sortita ' una stringa che specifica l'esito
	Dim Estratti ' una stringa che contiene i numeri  sortiti
End Class
' questa funzione restuirà la lista delle uscite di una data combinazione
' per una data sorte sulle ruote specificate. Le ruote verrano considerate
' separate come avviene nella funzione StatisticaVeloce
Function GetListaUscite(aNum,aRuote,Inizio,Fine,Sorte)
	Dim CollRighe ' sarà la collection che contiene el righe della lista
	Dim cRiga ' oggetto Riga verra istanziato un nuovo oggetto ogni volta
	' che avviene l'esito cercato. L'oggetto verra poi inserito in una collection
	Dim IdEst,R,i,NumEsiti ' variabili generiche
	Dim sRetEsito,sRetEstratti ' ritornano dalla funzione VerificaEsito
	' per prima cosa creiamo la collection e cioè il nostro contenitore , quello che emula in memoria
	' la lista dei risultati ottenuta dalla funzione statistica veeloce
	Set CollRighe = GetNewCollection ' istanzio la collection
	' in questo momento la collection è appena istanziata quindi è vuota
	'iniziamo il ciclo sulle estrazioni per analizzare il range
	
	
	' dato che la funzione statistca veloce quando mostra il ritardo lo calcola su tuttte le ruote 
	' contemporaneamente dobbiamo predisporre un 'array di comodo che contiene i numeri 
	' delle ruote interessate , dobbiamo farlo perche l'arrau aRuote è un  array di flag e non 
	' va bene , da quello dobbiamo creare un array temporaneo che memorizzi le ruote in gioco
	ReDim aRR(0)
	For R = 1 To 12
		If aRuote(R) Then
			i = i +1
			ReDim Preserve aRR (i)
			aRR (i) = R  
		End If
	Next
	
	
	For IdEst = Inizio To Fine
		'il ciclo delle ruote è interno
		For R = 1 To 12
			If aRuote(R) Then ' aRuote è un array di flag da 1 a 12 , se il flag è true la ruota  verrà analizzata
				ReDim aR(1) '  ricordiamoci che dobbiamo gestire le ruote separatamente come fa la funzione StatistcaVeloce
				aR(1) = R
				' con la funzione verifica esito andiamo a valutare i nostri numeri sulla ruota R
				If VerificaEsito(aNum,aR,IdEst,Sorte,1,,sRetEsito,,sRetEstratti)	Then
					'è sortito un esito quindi :
					NumEsiti = NumEsiti + 1	'incrementiamo la quantita di uscite
					Set cRiga = New clsRiga	'istanziamo un nuovo oggetto clsRiga con la parola chiave New
					' ora valoriziamo le proprietà dell'oggetto che abbiamo appena istanziato
					' abbiamo visto che per accedere alle proprietà si usa la sintassi
					' NomeOgetto.Proprieta
					' tutte le proprieta da valorizzare o gia le sappiamo o si possono calcolare
					' con funzioni degli scirpt
					cRiga.Num = NumEsiti
					cRiga.Estrazione = IdEst
					cRiga.DataEst = DataEstrazione(IdEst)
					cRiga.Ruota = R
					cRiga.sNumeri = StringaEstratti(IdEst,R)
					
					cRiga.Ritardo = RitardoCombinazione(aRR,aNum,Sorte,IdEst-1,,,Inizio)
					cRiga.Sortita = sRetEsito
					cRiga.Estratti = sRetEstratti
					' ora che il nostro oggetto è pronto lo inseriamo nella collection con il metodo Add
					' notiamo che questa volta visto che non ci serve non associamo nessuna chiave all'oggetto
					CollRighe.Add cRiga
				End If
			End If
		Next
	Next
	' quando la funzione ha terminato il suo lavoro nella nostra collection ci sono tutte le sortite registrate
	' percio la nostra funzione torna proprio la collection
	Set GetListaUscite = CollRighe ' notare che siccome stimao valorizzando un oggetto si deve usare la parola chiave SET
End Function
Sub Main

	Dim  Inizio,Fine,Sorte ' variabili per l'analisi range e sorte 
	Dim Lista  ' sarà valorizzata con il risultato della funzione GetListaUscite
	ReDim aNum (2) ' numeri in gioco .. adesso per esempio mettiamo 2 numeri ma possiamo metterne quanti vogliamo
	ReDim aRuote (12) ' Ruote in gioco , notare che qusto è un array di flag , non di numeri
				' cioe non contiene i numeri delle Ruote ma il flag a true sull'elemento corrispondente
				' alla ruota voluta 
	Dim clsRiga ' serve per ciclare sulla lista dei risultati ovvero la collection che ritorna da GetListaUscite
	
	' parametri di ricerca
	Inizio = 1  
	Fine = EstrazioniArchivio
	' usiamo i numeri dell'esempio di rubino
	aNum (1)= 6
	aNum(2) = 88
	
	aRuote( NA_) = True
	aRuote( PA_) = True
	
	Sorte = 2 
	
	' creiamo la lista dei risultati , notare che da ora in poi bastera questa 
	' chiamata per avere tutte quelle informazioni
	Set Lista = GetListaUscite(aNum,aRuote,Inizio,Fine,Sorte)
	
	
	' ora come esempio intanto mostriamo la lista come la funzione statistica veloce 
	ReDim aV(8)
	aV(1)= "Numero"
	aV(2)= "Estrazione"
	aV(3)= "Data"
	aV(4)= "Ruota"
	aV(5)= "Numeri"
	aV(6)= "Ritardo"
	aV(7)= "Sortita" 
	aV(8)= "Estratti"
	
	Call InitTabella (aV )
	
	For Each clsRiga In Lista
		ReDim aV(8)
		aV(1)= clsRiga.Num
		aV(2)= clsRiga.Estrazione
		aV(3)= clsRiga.DataEst
		aV(4)= NomeRuota(clsRiga.Ruota)
		aV(5)= clsRiga.sNumeri
		aV(6)= clsRiga.Ritardo
		aV(7)= clsRiga.Sortita 
		aV(8)= clsRiga.Estratti
		Call AddRigaTabella (aV )

	Next
	Call CreaTabella 
	 
	
	
End Sub
 
allora provo a darti altre informazioni di teoria perche in questo caso sono necessarie per capire.

ti faccio una piccola premessa per spiegarti il punto
Dim clsRiga' serve per ciclare sulla lista dei risultati ovvero la collection che ritorna da GetListaUscite

Il vbscript non ha variabili tipizzate , cosa vuol dire ? Vuol dire che una variabile non ha un suo tipo specifico
e quindi una variabile del vbscript puo valere qualsiasi cosa senza dovergli specificare il tipo ,
ad esempio in vb6
si farebbe cosi :

Codice:
Dim Numero as Integer
Dim Stringa as string 
dim cRiga as clsRiga

negli script invece si fa cosi

Codice:
Dim Numero 
Dim Stringa
Dim cRiga


la differenza è che mentre in vb6 la variabile Numero di tipo integer puo contenere solo numeri , la variabile di tipo string Stringa puo contenere solo stringhe e in ultimo la variabile di tipo ClsRiga solo oggetti del tipo ClsRiga
in vbscript non dovendo specificare il tipo una variabile puo essere valorizzata indiscriminatamente.
Finita la premessa arrivo al punto

primo punto
Dim clsRiga' serve per ciclare sulla lista dei risultati ovvero la collection che ritorna da GetListaUscite

Ti spiego , la funzione che abbiamo scritto torna un contenitore pieno di righe come se fossero le righe della
lista della statistica veloce.
Ora noi per leggere ste righe abbiamo bisogno proprio di un oggetto del tipo clsRiga per fare il ciclo For...Each sulla collection che infatti contiene oggetti di quel tipo li per fortuna in vbscript non bisogna tipizzare e quindi la dichiarazione è molto semplice cioè questa Dim clsRiga

vedi che questa variabile poi la useremo nel ciclo for each , come se fosse un ciclo for next solo che mentre
for next scorre i numeri il ciclo for ..each scorre gli oggetti.

secondo punto
Set Lista= GetListaUscite(aNum,aRuote,Inizio,Fine,Sorte)

semplicissimo , sappiamo che la funzione che abbiamo scritto torna una collection cioe un contenitore pieno di oggetti
per poterla usare durante il nostro script quindi dobbiamo prevedere una variabile che possa memorizzare
il risultato della funzione GetLista quando la chiamiamo , qual'è questa variabile , anche qui per fortuna non c'è
da tipizzare nulla , avevamo dichiarato la variabile cosi Dim Lista
percio quandio vogliamo chiamare la funzione GetLista e vogliamo leggerne i risultati semplicemente
usiamo questa istruzione dove valoriziamo la variabile lista con il risultato della funzione GetLista
Codice:
Set Lista=GetListaUscite(aNum,aRuote,Inizio,Fine,Sorte)


terzo punto

ultimo passaggio:
ciclo normale main ....... end sub per scrivere o mettere in tabella i dati.

qui non ho capito bene ma ti dico che la sub main è solo un esempio di come chiamare la funzione che abbiamo scritto
per dimostrarne il funzionamento


i ritardi allora li calcola considerando le ruote unite o separate non ho capito ...
 
ora vist oche abbiamo scritto una funzione moto versatile che puo essere riusata in altri contesti , cioè altri script
voglio parlare di una funzionalità degli script che credo sia sconosciuta o comunque poco usata.
In questi casi è molto utile perche uno si puo costruire una sualibreria di funzioni senza doverle riscrivere
ogni volta.
Dato che si tratta di fare qualche passaggio ho pensato che per illustrare la funzionalita fosse meglio fare un brevissimo video di un paio di minuti scarsi

IstruzioneIncludi.rar
 
spero che abbiate seguito l'esempio precedente perche ora procedero in questo modo

allora usate le istruzioni riepilogate in questa immagine (nel caso riguardate il video) ed incollate nel file lo script seguente.
ATTENZIONE .. ripeto lo script va incollato come da istruzioni non direttamente nel programma , dovete aver letto il post precedente
per capire meglio

istruzioni
Immagine7.png



nel file di testo mostrato nelle istruzioni incollare questo script.

Codice:
Class clsRiga
	Dim Num ' sara un intero ed indica il numero progressivo
	Dim Estrazione ' sara un intero e specifica l'estrazione di uscita
	Dim DataEst ' sara una stringa che contiene la data di uscita
	Dim Ruota ' sara un intero e specifica il numero della ruota di uscita
	Dim sNumeri ' sarà una string a come nella lista con i numeri dell'estrazione
	Dim Ritardo ' sara un intero che specifica il ritardo
	Dim Sortita ' una stringa che specifica l'esito
	Dim Estratti ' una stringa che contiene i numeri  sortiti
End Class
' questa funzione restuirà la lista delle uscite di una data combinazione
' per una data sorte sulle ruote specificate. Le ruote verrano considerate
' separate come avviene nella funzione StatisticaVeloce
Function GetListaUscite(aNum,aRuote,Inizio,Fine,Sorte , bRitardiRuoteUnite)
	Dim CollRighe ' sarà la collection che contiene el righe della lista
	Dim cRiga ' oggetto Riga verra istanziato un nuovo oggetto ogni volta
	' che avviene l'esito cercato. L'oggetto verra poi inserito in una collection
	Dim IdEst,R,NumEsiti , i ' variabili generiche
	Dim sRetEsito,sRetEstratti ' ritornano dalla funzione VerificaEsito
	' per prima cosa creiamo la collection e cioè il nostro contenitore , quello che emula in memoria
	' la lista dei risultati ottenuta dalla funzione statistica veeloce
	Set CollRighe = GetNewCollection ' istanzio la collection
	' in questo momento la collection è appena istanziata quindi è vuota
	
	' dato che la funzione statistca veloce quando mostra il ritardo lo calcola su tuttte le ruote
	' contemporaneamente (ruote unite) dobbiamo predisporre un 'array di comodo che contiene i numeri
	' delle ruote interessate , dobbiamo farlo perche l'array aRuote è un  array di flag e non
	' va bene , da quello dobbiamo creare un array temporaneo che memorizzi le ruote in gioco
	ReDim aRR(0)
	For R = 1 To 12
		If aRuote(R) Then
			i = i + 1
			ReDim Preserve aRR(i)
			aRR(i) = R
		End If
	Next
	
	'iniziamo il ciclo sulle estrazioni per analizzare il range
	For IdEst = Inizio To Fine
		'il ciclo delle ruote è interno
		For R = 1 To 12
			If aRuote(R) Then ' aRuote è un array di flag da 1 a 12 , se il flag è true la ruota  verrà analizzata
				ReDim aR(1) '  ricordiamoci che dobbiamo gestire le ruote separatamente come fa la funzione StatistcaVeloce
				aR(1) = R
				' con la funzione verifica esito andiamo a valutare i nostri numeri sulla ruota R
				If VerificaEsito(aNum,aR,IdEst,Sorte,1,,sRetEsito,,sRetEstratti)	Then
					'è sortito un esito quindi :
					NumEsiti = NumEsiti + 1	'incrementiamo la quantita di uscite
					Set cRiga = New clsRiga	'istanziamo un nuovo oggetto clsRiga con la parola chiave New
					' ora valoriziamo le proprietà dell'oggetto che abbiamo appena istanziato
					' abbiamo visto che per accedere alle proprietà si usa la sintassi
					' NomeOgetto.Proprieta
					' tutte le proprieta da valorizzare o gia le sappiamo o si possono calcolare
					' con funzioni degli scirpt
					cRiga.Num = NumEsiti
					cRiga.Estrazione = IdEst
					cRiga.DataEst = DataEstrazione(IdEst)
					cRiga.Ruota = R
					cRiga.sNumeri = StringaEstratti(IdEst,R)
					If bRitardiRuoteUnite Then
						' se il flag è true consideriamo le ruote unite e passiamo l'array aRR
						
						cRiga.Ritardo = RitardoCombinazione(aRR,aNum,Sorte,IdEst - 1,,,Inizio)

					Else
						' se invece le ruote sono separate passiamo l'array aR che coniene una sola ruota alla volta
						cRiga.Ritardo = RitardoCombinazione(aR,aNum,Sorte,IdEst - 1,,,Inizio)
					End If 
					cRiga.Sortita = sRetEsito
					cRiga.Estratti = sRetEstratti
					' ora che il nostro oggetto è pronto lo inseriamo nella collection con il metodo Add
					' notiamo che questa volta visto che non ci serve non associamo nessuna chiave all'oggetto
					CollRighe.Add cRiga
				End If
			End If
		Next
	Next
	' quando la funzione ha terminato il suo lavoro nella nostra collection ci sono tutte le sortite registrate
	' percio la nostra funzione torna proprio la collection
	Set GetListaUscite = CollRighe ' notare che siccome stimao valorizzando un oggetto si deve usare la parola chiave SET
End Function

' questa funzione riceve in input la collection prodotta da GetListaUscite , elabora i dati in essa
' contenuti e calcola la consecutivita max sulla ruota specificata, poi ci ritorna sia il valore 
' di consmax trovato sia il limite min e max entro il quale la consecutività si è sviluppata
Function CalcolaConsecMaxSuRuota (collRighe , Ruota , nRetEstrIni , nRetEstrFin)
	Dim cRiga ' serve per ciclare sulla collection
	Dim nConsec , nConsecMax ' valori per calcolare il range entro il quale si è verificata la cons max
	Dim nIdEstrIniTmp , nIdEstrFinTmp ' valori temporanei necessari all'algoritmo
	
	
	' per prima cosa azzeriamo le variabili
	nRetEstrIni = 0
	nRetEstrFin = 0
	nIdEstrIniTmp = 0
	nIdEstrFinTmp = 0
	nConsec = 0

	' ora cicliamo sugli elementi contenuti nella collection per conteggiare
	' la consecutivita max
	For Each cRiga In collRighe
		 
		
		If cRiga.Ruota = Ruota Then 	' quando la riga si riferisce alla ruota esaminata
						    	' calcoliamo la consecutivita e se è maggiore di quella max
							' aggiorniamo quest'ultima e aggiorniamo anche 
							' i limiti rilevati per farli tornare al chiamante 		
			If nIdEstrIniTmp = 0 Then 
				nIdEstrIniTmp = cRiga.Estrazione
			End If
			nIdEstrFinTmp = cRiga.Estrazione
			nConsec = nConsec +1
			If nConsec > nConsecMax Then 
				nRetEstrIni = nIdEstrIniTmp 
				nRetEstrFin = nIdEstrFinTmp
				nConsecMax = nConsec 
			End If 
		Else
			' se la riga non si riferisce alla ruota voluta azzeriamo le variabili
			nConsec = 0
			nIdEstrIniTmp = 0
		End If
	Next
	
	' al termine la funziona torna il valore che abbiamo calcolato
	CalcolaConsecMaxSuRuota  = nConsecMax 
End Function
Sub CreaListaDaCollection (CollRighe)
	Dim clsRiga ' serve per ciclare sulla lista dei risultati ovvero la collection che ritorna da GetListaUscite
	
	 
	ReDim aV(8)
	aV(1) = "Numero"
	aV(2) = "Estrazione"
	aV(3) = "Data"
	aV(4) = "Ruota"
	aV(5) = "Numeri"
	aV(6) = "Ritardo"
	aV(7) = "Sortita"
	aV(8) = "Estratti"
	
	Call InitTabella(aV)
	
	For Each clsRiga In CollRighe
		ReDim aV(8)
		aV(1) = clsRiga.Num
		aV(2) = clsRiga.Estrazione
		aV(3) = clsRiga.DataEst
		aV(4) = NomeRuota(clsRiga.Ruota)
		aV(5) = clsRiga.sNumeri
		aV(6) = clsRiga.Ritardo
		aV(7) = clsRiga.Sortita
		aV(8) = clsRiga.Estratti
		Call AddRigaTabella(aV)

	Next
	Call CreaTabella
End Sub
ora incollare lo script seguente in Spaziometria e lanciarlo

Codice:
Option Explicit
Includi "C:\Documents and Settings\Administrator\Dati applicazioni\SpazioMetria\Script\Funzioni\GetListaStatVeloce.txt"
Sub Main
	Dim Inizio,Fine,Sorte ' variabili per l'analisi range e sorte
	Dim Lista ' sarà valorizzata con il risultato della funzione GetListaUscite
	ReDim aNum(2) ' numeri in gioco .. adesso per esempio mettiamo 2 numeri ma possiamo metterne quanti vogliamo
	ReDim aRuote(12) ' Ruote in gioco , notare che qusto è un array di flag , non di numeri
	' cioe non contiene i numeri delle Ruote ma il flag a true sull'elemento corrispondente
	' alla ruota voluta
	Dim nConsMax,nRetEstrIni,nRetEstrFin ' tornano dalla funzione CalcolaConsecMaxSuRuota
	' impostiamo banali parametri di ricerca ================================
	Inizio = 1
	Fine = EstrazioniArchivio
	' usiamo i numeri dell'esempio di rubino
	aNum(1) = 6
	aNum(2) = 88
	aRuote(NA_) = True
	aRuote(PA_) = True
	Sorte = 2
	'========================================================================
	' creiamo la lista dei risultati come se fosse la funzione StatisticaVeloce
	' se  si vuole il ritardo su ruote unite si richiama cosi
	Set Lista = GetListaUscite(aNum,aRuote,Inizio,Fine,Sorte,True) ' <-- eventualmente remmare questa riga
	' se  si vuole il ritardo su ruote separate si richiama come segue (bisogna remmare una delle due righe)
	'Set Lista = GetListaUscite(aNum,aRuote,Inizio,Fine,Sorte,False ) ' <-- eventualmente remmare questa riga
	'-------------------------------------------------------------------------------------
	' ora se vogliamo mostrare in output la lista come se fosse la funzione StatisticaVeloce
	' lanciamo la procedura seguente che prende in input la colllection e scrive la lista relativa
	' nell'output
	Call CreaListaDaCollection(Lista)
	'-------------------------------------------------------------------------------------
	' ora per mostrare la consecutivita massima lanciamo l'apposita funzione che riceve in input
	' la collection con tutte le righe , le analizza e ci torna quello che vogliamo
	' dato che è un esempio le  funzioni le lanciamo una alla volta
	' sulle ruote che sappiamo tanto per far vedere come si fa
	nConsMax = CalcolaConsecMaxSuRuota(Lista,NA_,nRetEstrIni,nRetEstrFin)
	Call Scrivi("La combinazione " & StringaNumeri(aNum) & " ha la consecutività max di " & nConsMax & " sulla ruota di " & NomeRuota(NA_))
	Call Scrivi("Sortita tra le estrazioni " & GetInfoEstrazione(nRetEstrIni) & " e " & GetInfoEstrazione(nRetEstrFin))
	Call Scrivi
	nConsMax = CalcolaConsecMaxSuRuota(Lista,PA_,nRetEstrIni,nRetEstrFin)
	Call Scrivi("La combinazione " & StringaNumeri(aNum) & " ha la consecutività max di " & nConsMax & " sulla ruota di " & NomeRuota(PA_))
	Call Scrivi("Sortita tra le estrazioni " & GetInfoEstrazione(nRetEstrIni) & " e " & GetInfoEstrazione(nRetEstrFin))
	'-------------------------------------------------------------------------------------
End Sub


Immagine8.png
 
Ultima modifica di un moderatore:
ciao , Rubino , dato che la funzione che torna la collection la vogliamo riusare in altri contesti non conviene sovraccaricarla di funzionalità
che poi la rendono troppo specifica , deve rimanere generica, se segui l'ultimo esempio che ho postato vedrai che abbiamo scritto gia una funzione apposta che riceve in input la collection che abbiamo ottenuto da GetLista e che ci calcola la consecutività sulla ruota che vogliamo.
Ad ogni modo potrebbe andare pure come hai fatto tu solo che dobbiamo seguire questa regola : le funzioni generiche possono essere riutilizzate percio dobbiamo cercare di renderle il piu astratte possibile.
ciao

P.S.
Quindi lo script da incollare in spaziometria è questo
Codice:
Option Explicit
Includi "C:\Documents and Settings\Administrator\Dati applicazioni\SpazioMetria\Script\Funzioni\GetListaStatVeloce.txt"
Sub Main
	Dim Inizio,Fine,Sorte ' variabili per l'analisi range e sorte
	Dim Lista ' sarà valorizzata con il risultato della funzione GetListaUscite
	ReDim aNum(2) ' numeri in gioco .. adesso per esempio mettiamo 2 numeri ma possiamo metterne quanti vogliamo
	ReDim aRuote(12) ' Ruote in gioco , notare che qusto è un array di flag , non di numeri
	' cioe non contiene i numeri delle Ruote ma il flag a true sull'elemento corrispondente
	' alla ruota voluta
	Dim nConsMax,nRetEstrIni,nRetEstrFin ' tornano dalla funzione CalcolaConsecMaxSuRuota
	' impostiamo banali parametri di ricerca ================================
	Inizio = 1
	Fine = EstrazioniArchivio
	' usiamo i numeri dell'esempio di rubino
	aNum(1) = 6
	aNum(2) = 88
	aRuote(NA_) = True
	aRuote(PA_) = True
	Sorte = 2
	'========================================================================
	' creiamo la lista dei risultati come se fosse la funzione StatisticaVeloce
	' se  si vuole il ritardo su ruote unite si richiama cosi
	Set Lista = GetListaUscite(aNum,aRuote,Inizio,Fine,Sorte,True) ' <-- eventualmente remmare questa riga
	' se  si vuole il ritardo su ruote separate si richiama come segue (bisogna remmare una delle due righe)
	'Set Lista = GetListaUscite(aNum,aRuote,Inizio,Fine,Sorte,False ) ' <-- eventualmente remmare questa riga
	'-------------------------------------------------------------------------------------
	' ora se vogliamo mostrare in output la lista come se fosse la funzione StatisticaVeloce
	' lanciamo la procedura seguente che prende in input la colllection e scrive la lista relativa
	' nell'output
	Call CreaListaDaCollection(Lista)
	'-------------------------------------------------------------------------------------
	' ora per mostrare la consecutivita massima lanciamo l'apposita funzione che riceve in input
	' la collection con tutte le righe , le analizza e ci torna quello che vogliamo
	' dato che è un esempio le  funzioni le lanciamo una alla volta
	' sulle ruote che sappiamo tanto per far vedere come si fa
	nConsMax = CalcolaConsecMaxSuRuota(Lista,NA_,nRetEstrIni,nRetEstrFin)
	Call Scrivi("La combinazione " & StringaNumeri(aNum) & " ha la consecutività max di " & nConsMax & " sulla ruota di " & NomeRuota(NA_))
	Call Scrivi("Sortita tra le estrazioni " & GetInfoEstrazione(nRetEstrIni) & " e " & GetInfoEstrazione(nRetEstrFin))
	Call Scrivi
	nConsMax = CalcolaConsecMaxSuRuota(Lista,PA_,nRetEstrIni,nRetEstrFin)
	Call Scrivi("La combinazione " & StringaNumeri(aNum) & " ha la consecutività max di " & nConsMax & " sulla ruota di " & NomeRuota(PA_))
	Call Scrivi("Sortita tra le estrazioni " & GetInfoEstrazione(nRetEstrIni) & " e " & GetInfoEstrazione(nRetEstrFin))
	'-------------------------------------------------------------------------------------
End Sub

che dara questi risultati

Immagine9.png


ora prendendo esempio da quello che cìè scritto nella Sub Main puoi iniziare ad usare
la funzione che abbiamo scritto per il tuo scopo iniziale.
 
Ultima modifica di un moderatore:
bene , quindi il nostro esempio è finito , vediamo che nella collection ci portiamo appresso un sacco di informazioni , ancora non le usiamo tutte ma sono li pronte per quando serviranno
ciao !
 
scusami se posso sembrare pignolo ma la teminologia è importante , trattandosi di cose tecniche bisogna usare quella giusta senno non si capisce.
non ho visto che avevi messo il calcolo della consecutività nella collection registrata.

non abbiamio registrato una collection ma una funzione che restituisce la collection , anzi in quel file di testo che abbiamo creato sono presenti 3 funzioni diverse tutte richiamabili in qualsiasi script che usi l'istruzione Includi con questo file che diciamo

1) Function GetListaUscite(aNum,aRuote,Inizio,Fine,Sorte , bRitardiRuoteUnite)

2) Function CalcolaConsecMaxSuRuota (collRighe , Ruota , nRetEstrIni , nRetEstrFin)

3) Sub CreaListaDaCollection (CollRighe)
 
si , esatto .. bhe penso che farai un ciclo per sviluppare gli ambi e per ogni ambo potrai richiamare la funzione , calcolare la consecutivita
e quindi individuare i valori massimi e tute le altre cose ..ciao
 
Ciao Luigi, Buongiorno a Tutte/i.

Ti ringrazio infinitamente per queste importantissime lezioni che ci hai preparato.

Ho tempi di apprendimento molto lunghi e pertanto non riesco a stare al passo,

ma spero, col tempo, di poter arrivare a comprendere dapprima ed una volta interiorizzate,

utilizzare, le nozioni qui presenti.

Grazie per la tua generosità.

:) Buon WeekEnd
 
Ultima modifica:
Ciao Luigi, Rubino, mi sono letto il tutto, e purtroppo per me vale lo stesso pensiero di Joe(ciao), comunque il concetto comincia a farsi + chiaro.

Grazie e un saluto.

Mike
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 18 gennaio 2025
    Bari
    24
    76
    02
    72
    12
    Cagliari
    21
    08
    77
    04
    17
    Firenze
    74
    84
    07
    12
    72
    Genova
    13
    07
    33
    47
    18
    Milano
    01
    34
    09
    55
    48
    Napoli
    46
    23
    25
    03
    06
    Palermo
    44
    07
    01
    46
    84
    Roma
    88
    78
    64
    74
    04
    Torino
    07
    87
    67
    38
    53
    Venezia
    31
    25
    04
    18
    02
    Nazionale
    49
    82
    59
    65
    67
    Estrazione Simbolotto
    Bari
    03
    13
    31
    23
    35
Indietro
Alto