Novità

Piccolo aiutino su script, Mike o altri scripter se date un occhio...Grazie!

Ciao Luigi perdonami ma non ti avevo letto mentre ero impegnato a scrivere.
Anche io sono cresciuto con i primi rudimenti di basic con commedore 64 e li mi è rimasta la testa e ancora quella logica del passo dopo passo mi accompagna.

Purtroppo è difficile ma non impossibile rinunciare a quella logica.

e come diceva Moro sono arrivate le cazziature !!!!

Ciao e sempre grazie per quello che ci ha insegnato e ancora vorrai insegnarci.
 
Le mie cazziature sono sempre a fin di bene :-) Dai hai fatto bene ma se vuoi farmi contento trascrivi il codice che hai scritto in una sub e usa quella , vedrai che se ti sforzi di seguire questa logica ti troverai molto meglio.
Tra l'altro non è che siano richiesti sforzi particolari , il codice è sempre quello , ti chiedo solo di metterlo nella sub esterna ..

ciao a tutti e due ..
 
Ok Luigi sempre se non sbaglio qualcosa, ho provato come dici tu a fare la function che evidenzia i numeri delle combinazioni.
Giusto per dare ascolto ai tuoi insegnamenti.

Ciao

Codice:
Option Explicit
Sub Main
	Dim ninizio,nfine,numeri,numestrazioni,nColonneTot,dal,al,n,l,l1,l2,o,r,Classe,Cl,aCol,z,x,p,xx
	ReDim aNumeri(1260)
	Dim aTitoli(5),ess,esito,colpi,estratti,id
	Call AggiornaArchivioDL
	Call ImpostaArchivio10ELotto(2)
	z = GetInfoEstrazioneDL(EstrazioniArchivioDL)
	x =(Mid(z,11,3))
	numestrazioni = InputBox("QUANTE ESTRAZIONI VUOI VERIFICARE ?" & vbCrLf & " " & vbCrLf & "IN AUTOMATICO VIENE INSERITO IL NUMERO" & vbCrLf & " " & vbCrLf & "DI QUELLE ESTRATTE OGGI FINO AD ORA","NUMERO USCITE OGGI",x)
	nfine = EstrazioniArchivioDL
	ninizio = nfine - 200'numestrazioni + 1
	For l1 = ninizio To nfine
		l2 = l1
	Next
	Cl = 3
	aTitoli(1) = "TERZINE"
	dal = 1
	al = 9
	For o = dal To al
		aNumeri(o) = o
	Next
	Classe = Cl
	nColonneTot = InitSviluppoIntegrale(aNumeri,Classe)
	For l = 1 To nColonneTot
		Call GetCombSviluppo(aCol)
		n = SerieFreqDL(ninizio,nfine,aCol,Classe)
		r = SerieRitardoDL(ninizio,nfine,aCol,Classe)
		ReDim aValori(5)
		aValori(1) = StringaNumeri(aCol)
		aValori(2) = Format2(n)
		aValori(3) = Format2(r)
		If n = 0 Then
			Scrivi aValori(1) & " | " & n & " | " & r & " ---> FORMAZIONE NON ANCORA USCITA",True,,,vbRed
		End If
		Scrivi aValori(1) & " | " & n & " | " & r,True,,,vbBlue
		'------------------------------------------------------------
		For ess = ninizio To nfine
			If VerificaEsitoDL(aCol,ess,3,1,esito,colpi,estratti,id) = True Then
				'---------------------------------------------------------
				If GetInfoEstrazioneDL(id) = GetInfoEstrazioneDL(nfine) Then
					Call evidenzeblu(id,aCol,p,nfine,xx)
					
					'Scrivi GetInfoEstrazioneDL(id) & "    " & StringaEstrattiDL(id,".") & " - " & FormatSpace(nfine - id,3) & "  -  " & estratti,1,1,2,4,2
				End If
				If GetInfoEstrazioneDL(id) <> GetInfoEstrazioneDL(nfine) Then
					Call evidenzeRosse(id,aCol,p,nfine,xx)
					
					'Scrivi GetInfoEstrazioneDL(id) & "    " & StringaEstrattiDL(id,".") & " - " & FormatSpace(nfine - id,3) & "  -  " & estratti,0,1,,0,2
				
				End If
				'Scrivi "Qui vorrei i numeri estratti delle formazioni già uscite nel formato [N° Estr] [DATA] [ORA] [N° ESTRATTI]"
			End If
		Next
		Scrivi String(160,"-")
		'--------------------------------------------------------------
	Next
	Call Scrivi
	Call TestoInBandaPassante("Script Realizzato Da Moro_80",1,vbYellow,vbBlack)
End Sub
Function evidenzeRosse(id,acol,p,nfine,xx)

	Scrivi GetInfoEstrazioneDL(id) & "    ",0,0
	For p = 1 To 20
		For xx = 1 To UBound(acol)
			If EstrattoDL(id,p) = acol(xx) Then
				ColoreTesto 2
			End If
		Next
		Scrivi Format2(EstrattoDL(id,p)),1,0
		ColoreTesto 0
		Scrivi ".",0,0
	Next
	Scrivi " - Rit Cronol : " & FormatSpace(nfine - id,3),1,1,,1,2
End Function
Function evidenzeblu(id,acol,p,nfine,xx)

	Scrivi GetInfoEstrazioneDL(id) & "    ",0,0
	For p = 1 To 20
		For xx = 1 To UBound(acol)
			If EstrattoDL(id,p) = acol(xx) Then
				ColoreTesto 1
			End If
		Next
		Scrivi Format2(EstrattoDL(id,p)),1,0
		ColoreTesto 0
		Scrivi ".",0,0
	Next
	Scrivi " - Rit Cronol : " & FormatSpace(nfine - id,3),1,1,,1,2
End Function
 
bene, a occho credo funzioni sono in ufficio e non ho provato.
Faccio il pignolo .. perchescrivere due funzioni uguali che differiscono solo per il colore blu/rosso ?
Facendo diventare il colore un parametr odelal sub non è necessario scriverne 2..

poi ora che vedo meglio , perche p e xx sono parametri ?
 
Ultima modifica di un moderatore:
No !!! p e xx non sono parametri, ma con option explicit anche se dichiarati in dim vanno in errore e per questo li ho messi nella dichiarazione function.
Penso che qui con la Redim si bypassa l'errore.
Poi si sicuramente era meglio fare una function unica che diversificasse i colori rossi o blu con la condizione if, ma come vedi la logica di 20 anni fa è ancora presente.

Ciao scappo......
 
ciao Mike , forse i dim invece di metterli dentro la nuova function li avevi lasciati dentro la sub main ..
si chiama parametro tutte le variabili che compaiono nella dichiarazione del prototipo della sub/function quindi sia xx che p erano parametri ..
Ho fatto la modifica io ... rimarrebbe il discorso di passare il colore come parametro e usare una sola sub .. è cosi banale che non l'ho fatto.
Comunque bene , funziona perfettamente .. Moro scusami se certe volte ti sei sentito offeso (hai parlato di insulti) io la pazienza ce l'ho pero forse sono anche un po' severo e sicuramente certe volte burbero .. ma non 'è nulla di personale. Studia la soluzione di Mike.

un saluto

Codice:
Option Explicit
Sub Main
	Dim ninizio,nfine,numeri,numestrazioni,nColonneTot,dal,al,n,l,l1,l2,o,r,Classe,Cl,aCol,z,x,p,xx
	ReDim aNumeri(1260)
	Dim aTitoli(5),ess,esito,colpi,estratti,id
	Call AggiornaArchivioDL
	Call ImpostaArchivio10ELotto(2)
	z = GetInfoEstrazioneDL(EstrazioniArchivioDL)
	x =(Mid(z,11,3))
	numestrazioni = InputBox("QUANTE ESTRAZIONI VUOI VERIFICARE ?" & vbCrLf & " " & vbCrLf & "IN AUTOMATICO VIENE INSERITO IL NUMERO" & vbCrLf & " " & vbCrLf & "DI QUELLE ESTRATTE OGGI FINO AD ORA","NUMERO USCITE OGGI",x)
	nfine = EstrazioniArchivioDL
	ninizio = nfine - 200'numestrazioni + 1
	For l1 = ninizio To nfine
		l2 = l1
	Next
	Cl = 3
	aTitoli(1) = "TERZINE"
	dal = 1
	al = 9
	For o = dal To al
		aNumeri(o) = o
	Next
	Classe = Cl
	nColonneTot = InitSviluppoIntegrale(aNumeri,Classe)
	For l = 1 To nColonneTot
		Call GetCombSviluppo(aCol)
		n = SerieFreqDL(ninizio,nfine,aCol,Classe)
		r = SerieRitardoDL(ninizio,nfine,aCol,Classe)
		ReDim aValori(5)
		aValori(1) = StringaNumeri(aCol)
		aValori(2) = Format2(n)
		aValori(3) = Format2(r)
		If n = 0 Then
			Scrivi aValori(1) & " | " & n & " | " & r & " ---> FORMAZIONE NON ANCORA USCITA",True,,,vbRed
		End If
		Scrivi aValori(1) & " | " & n & " | " & r,True,,,vbBlue
		'------------------------------------------------------------
		For ess = ninizio To nfine
			If VerificaEsitoDL(aCol,ess,3,1,esito,colpi,estratti,id) = True Then
				'---------------------------------------------------------
				If GetInfoEstrazioneDL(id) = GetInfoEstrazioneDL(nfine) Then
					Call evidenzeblu(id,aCol,nfine)
					
					'Scrivi GetInfoEstrazioneDL(id) & "    " & StringaEstrattiDL(id,".") & " - " & FormatSpace(nfine - id,3) & "  -  " & estratti,1,1,2,4,2
				End If
				If GetInfoEstrazioneDL(id) <> GetInfoEstrazioneDL(nfine) Then
					Call evidenzeRosse(id,aCol,nfine)
					
					'Scrivi GetInfoEstrazioneDL(id) & "    " & StringaEstrattiDL(id,".") & " - " & FormatSpace(nfine - id,3) & "  -  " & estratti,0,1,,0,2
				
				End If
				'Scrivi "Qui vorrei i numeri estratti delle formazioni già uscite nel formato [N° Estr] [DATA] [ORA] [N° ESTRATTI]"
			End If
		Next
		Scrivi String(160,"-")
		'--------------------------------------------------------------
	Next
	Call Scrivi
	Call TestoInBandaPassante("Script Realizzato Da Moro_80",1,vbYellow,vbBlack)
End Sub
Function evidenzeRosse(id,acol,nfine)
	Dim p , xx

	Scrivi GetInfoEstrazioneDL(id) & "    ",0,0
	For p = 1 To 20
		For xx = 1 To UBound(acol)
			If EstrattoDL(id,p) = acol(xx) Then
				ColoreTesto 2
			End If
		Next
		Scrivi Format2(EstrattoDL(id,p)),1,0
		ColoreTesto 0
		Scrivi ".",0,0
	Next
	Scrivi " - Rit Cronol : " & FormatSpace(nfine - id,3),1,1,,1,2
End Function
Function evidenzeblu(id,acol  ,nfine )
	Dim p , xx
		
	Scrivi GetInfoEstrazioneDL(id) & "    ",0,0
	For p = 1 To 20
		For xx = 1 To UBound(acol)
			If EstrattoDL(id,p) = acol(xx) Then
				ColoreTesto 1
			End If
		Next
		Scrivi Format2(EstrattoDL(id,p)),1,0
		ColoreTesto 0
		Scrivi ".",0,0
	Next
	Scrivi " - Rit Cronol : " & FormatSpace(nfine - id,3),1,1,,1,2
End Function
 
Ciao Luigi,
più che studiare la soluzione di Mike ne ho elaborato una mia.

Io la sub l'ho scritta così:

Codice:
Option Explicit
Sub Main
	Dim data,ora,ninizio,nfine,numeri,nNumEstr,num,nume,numestr,numestrazioni,nColonneTot,dal,al,n,l,l1,l2,o,r,Classe,Cl,aCol,z,x
	ReDim aNumeri(1260)
	Dim aTitoli(5),ess,esito,colpi,estratti,id
	Call AggiornaArchivioDL
	Call ImpostaArchivio10ELotto(2)
	z = GetInfoEstrazioneDL(EstrazioniArchivioDL)
	x =(Mid(z,11,3))
	numestrazioni = InputBox("QUANTE ESTRAZIONI VUOI VERIFICARE ?" & vbCrLf & " " & vbCrLf & "IN AUTOMATICO VIENE INSERITO IL NUMERO" & vbCrLf & " " & vbCrLf & "DI QUELLE ESTRATTE OGGI FINO AD ORA","NUMERO USCITE OGGI",x)
	nfine = EstrazioniArchivioDL
	ninizio = nfine - numestrazioni + 1
	For l1 = ninizio To nfine
	l2 = l1
	Next
	Cl = 3
	aTitoli(1) = "TERZINE"
	dal = 1
	al = 10
	For o = dal To al
	aNumeri(o) = o
	Next
	Classe = Cl
	nColonneTot = InitSviluppoIntegrale(aNumeri,Classe)
	For l = 1 To nColonneTot
		Call GetCombSviluppo(aCol)
		n = SerieFreqDL(ninizio,nfine,aCol,Classe)
		r = SerieRitardoDL(ninizio,nfine,aCol,Classe)
		ReDim aValori(5)
		aValori(1) = StringaNumeri(aCol)
		aValori(2) = Format2(n)
		aValori(3) = Format2(r)
		If n = 0 Then
			Scrivi aValori(1) & " | " & n & " | " & r & " ---> FORMAZIONE NON ANCORA USCITA",True,,,vbRed
		End If
		If n <> 0 Then
		Scrivi aValori(1) & " | " & n & " | " & r,True,,,vbBlue
		End If
		For ess = ninizio To nfine
			If VerificaEsitoDL(aCol,ess,Cl,1,esito,colpi,estratti,id) = True Then
				If GetInfoEstrazioneDL(id) = GetInfoEstrazioneDL(nfine) Then
					nume = GetInfoEstrazioneDL(id)
					numestr = Mid(nume,11,3)
					data = Mid(GetInfoEstrazioneDL(id),15,11)
					ora = GetOraEstrazione(numestr)
					Call ScriviEdEvidenzia(id,aCol)
					Scrivi data & " " & ora & " " & numestr & " ",True,,,vbBlue
				End If			
				If GetInfoEstrazioneDL(id) <> GetInfoEstrazioneDL(nfine) Then
					nume = GetInfoEstrazioneDL(id)
					numestr = Mid(nume,11,3)
					data = Mid(GetInfoEstrazioneDL(id),15,11)
					ora = GetOraEstrazione(numestr)
					Call ScriviEdEvidenzia(id,aCol)
					Scrivi data & " " & ora & " " & numestr & " ",True,,,vbBlue
				End If
			End If
		Next
		Scrivi String(160,"-")
	Next
	Call Scrivi
	Call TestoInBandaPassante("Script Realizzato Da Moro_80",1,vbYellow,vbBlack)
	
End Sub
	
Function GetOraEstrazione(numestr)
Dim Ore
Dim TotMinuti
Dim MinutiRimanenti
TotMinuti =(numestr * 5)
Ore = TotMinuti / 60
MinutiRimanenti = TotMinuti Mod 60
GetOraEstrazione = FormattaStringa(Int(Ore),"00") & ":" & FormattaStringa(MinutiRimanenti,"00")
End Function

Sub ScriviEdEvidenzia(sStringaEstratti,aNumDaEvid)
Dim p
Dim xx
For p = 1 To 20
For xx = 1 To UBound(aNumDaEvid)
 If EstrattoDL(sStringaEstratti,p) = aNumDaEvid(xx) Then
 ColoreTesto 2
 End If
Next
 Scrivi Format2(EstrattoDL(sStringaEstratti,p)),1,0
 ColoreTesto 0
 Scrivi " ",0,0
Next
End Sub

Ecco l'immagine dell'output

Output1.jpg

Ho seguito la stessa logica anche per ottenere l'ora estrazione...

P.S Tranquillo non mi sento offeso...tutto s'impara anche a suon di bacchettate!


Ciao
 
Ultima modifica:
Molto bene , bravo ! Ti consiglio di sostituire l'istruzione in questa riga come ho fatto io , senno potrebbe dare errore (mi è successo)

Codice:
numestr = IndiceAnnualeDL ( ess) '  Mid(nume,11,3)

ci sono altre ottimizzazioni da fare , per esempio viene piu volte eseguita questa istruzione

Codice:
GetInfoEstrazioneDL(id)

anche se il valore id non cambia. Ebbene in questi casi conviene memorizzare in una variabile il valore tornato dalla prima chiamata e poi usare quello.
Anche in questo pezzo di codice sebbene funzioni c'è un'ottimizzazone da fare (ho eliminato alcune righe per comodita di lettura)

Codice:
				If GetInfoEstrazioneDL(id) = GetInfoEstrazioneDL(nfine) Then
					
				End If
				If GetInfoEstrazioneDL(id) <> GetInfoEstrazioneDL(nfine) Then
					
				End If

se mi dici qual'è l'ottimizzazione alla quale mi riferisco ti metto subito un bel 7 ... :-)
Dai scherzo .. ma fare caso a queste cose fa la differenza ,il processore quando elabora il codice compie degli sforzi quindi per realizzare uno script piu performate non bisogna fargli ricalcolare i valori che gia aveva calcolato e usare comunque tutte le accortezze possibili ..

ciao
 
Ultima modifica di un moderatore:
Luigi, allora me lo merito sto 7 + ??? :)

Ecco il codice per il mio voto:

Codice:
Option Explicit
Sub Main
	Dim data,ora,ninizio,nfine,numeri,nNumEstr,num,nume,numestr,numestrazioni,nColonneTot,dal,al,n,l,l1,l2,o,r,Classe,Cl,aCol,z,x
	ReDim aNumeri(1260)
	Dim aTitoli(5),ess,esito,colpi,estratti,id
	Call AggiornaArchivioDL
	Call ImpostaArchivio10ELotto(2)
	z = GetInfoEstrazioneDL(EstrazioniArchivioDL)
	x =(Mid(z,11,3))
	numestrazioni = InputBox("QUANTE ESTRAZIONI VUOI VERIFICARE ?" & vbCrLf & " " & vbCrLf & "IN AUTOMATICO VIENE INSERITO IL NUMERO" & vbCrLf & " " & vbCrLf & "DI QUELLE ESTRATTE OGGI FINO AD ORA","NUMERO USCITE OGGI",x)
	nfine = EstrazioniArchivioDL
	ninizio = nfine - numestrazioni + 1
	For l1 = ninizio To nfine
	l2 = l1
	Next
	Cl = 3
	aTitoli(1) = "TERZINE"
	dal = 1
	al = 10
	For o = dal To al
	aNumeri(o) = o
	Next
	Classe = Cl
	nColonneTot = InitSviluppoIntegrale(aNumeri,Classe)
	For l = 1 To nColonneTot
		Call GetCombSviluppo(aCol)
		n = SerieFreqDL(ninizio,nfine,aCol,Classe)
		r = SerieRitardoDL(ninizio,nfine,aCol,Classe)
		ReDim aValori(5)
		aValori(1) = StringaNumeri(aCol)
		aValori(2) = Format2(n)
		aValori(3) = Format2(r)
		If n = 0 Then
		Scrivi aValori(1) & " | " & n & " | " & r & " ---> FORMAZIONE NON ANCORA USCITA",True,,,vbRed
		Else
		Scrivi aValori(1) & " | " & n & " | " & r,True,,,vbBlue
		End If
		For ess = ninizio To nfine
			id = GetInfoEstrazioneDL(ess)
				If VerificaEsitoDL(aCol,ess,Cl,1,esito,colpi,estratti,id) = True Then
					If id = GetInfoEstrazioneDL(nfine) Then
						ora = GetOraEstrazione(numestr)
						Call ScriviEdEvidenzia(id,aCol)
					Else
						ora = GetOraEstrazione(numestr)
						Call ScriviEdEvidenzia(id,aCol)
					End If	
				nume = id
				numestr = IndiceAnnualeDL(ess)
				data = Mid(id,15,11)
				Scrivi data & " " & ora & " " & numestr & " ",True,,,vbBlue
				End If
		Next
		Scrivi String(160,"-")
	Next
	Call Scrivi
	Call TestoInBandaPassante("Script Realizzato Da Moro_80",1,vbYellow,vbBlack)
	
End Sub
	
Function GetOraEstrazione(numestr)
Dim Ore
Dim TotMinuti
Dim MinutiRimanenti
TotMinuti =(numestr * 5)
Ore = TotMinuti / 60
MinutiRimanenti = TotMinuti Mod 60
GetOraEstrazione = FormattaStringa(Int(Ore),"00") & ":" & FormattaStringa(MinutiRimanenti,"00")
End Function

Sub ScriviEdEvidenzia(sStringaEstratti,aNumDaEvid)
Dim p
Dim xx
For p = 1 To 20
For xx = 1 To UBound(aNumDaEvid)
 If EstrattoDL(sStringaEstratti,p) = aNumDaEvid(xx) Then
 ColoreTesto 2
 End If
Next
 Scrivi Format2(EstrattoDL(sStringaEstratti,p)),1,0
 ColoreTesto 0
 Scrivi " ",0,0
Next
End Sub

Ciao
 
Ciao Luigi & Moro, che bello lavorare e interagire così è sicuramente costruttivo e porta ad un ulteriore arricchimento.


un saluto
 
eheh per il + andiamoci piano ... ahah l'ho detto prima che sono severo :-)
A parte gli scherzi , qui c'è un errore

Codice:
	If id = GetInfoEstrazioneDL(nfine) Then
					ora = GetOraEstrazione(numestr)
					Call ScriviEdEvidenzia(id,aCol)
				Else
					ora = GetOraEstrazione(numestr)
					Call ScriviEdEvidenzia(id,aCol)
				End If
				nume = id
				numestr = IndiceAnnualeDL(ess)
				data = Mid(id,15,11)
				Scrivi data & " " & ora & " " & numestr & " ",True,,,vbBlu

la prima volta che esegue GetOraEstrazione(numestr) numestr non ha valore ....

inoltre questa riga

Codice:
ora = GetOraEstrazione(numestr)

è ripetuta 2 volte ma da sempre lo stesso valore .. anche qui c'è da ottimizzare ...anzi a ben guardare quel blocco if che la contiene non capisco a che serve..
fa la stessa cosa in tutti i casi ...

procedi con le ottimizzazioni e ripassa alla cattedra :-) ahahah
 
Ciao Luigi,
neanche il tempo di mangiare un boccone, torno e mi trovo il "cazziatone" :)

resterò famoso in questo forum per essere il più "bacchettato" degli utenti :)

Comunque sono qui per ripassare in cattedra, ora credo sia ottimizzato al massimo!!

Codice:
Option Explicit
Sub Main
	Dim data,ora,ninizio,nfine,numeri,nNumEstr,num,nume,numestr,numestrazioni,nColonneTot,dal,al,n,l,l1,l2,o,r,Classe,Cl,aCol,z,x
	ReDim aNumeri(1260)
	Dim aTitoli(5),ess,esito,colpi,estratti,id
	Call AggiornaArchivioDL
	Call ImpostaArchivio10ELotto(2)
	z = GetInfoEstrazioneDL(EstrazioniArchivioDL)
	x =(Mid(z,11,3))
	numestrazioni = InputBox("QUANTE ESTRAZIONI VUOI VERIFICARE ?" & vbCrLf & " " & vbCrLf & "IN AUTOMATICO VIENE INSERITO IL NUMERO" & vbCrLf & " " & vbCrLf & "DI QUELLE ESTRATTE OGGI FINO AD ORA","NUMERO USCITE OGGI",x)
	nfine = EstrazioniArchivioDL
	ninizio = nfine - numestrazioni + 1
	For l1 = ninizio To nfine
	l2 = l1
	Next
	Cl = 3
	aTitoli(1) = "TERZINE"
	dal = 1
	al = 10
	For o = dal To al
	aNumeri(o) = o
	Next
	Classe = Cl
	nColonneTot = InitSviluppoIntegrale(aNumeri,Classe)
	For l = 1 To nColonneTot
		Call GetCombSviluppo(aCol)
		n = SerieFreqDL(ninizio,nfine,aCol,Classe)
		r = SerieRitardoDL(ninizio,nfine,aCol,Classe)
		ReDim aValori(5)
		aValori(1) = StringaNumeri(aCol)
		aValori(2) = Format2(n)
		aValori(3) = Format2(r)
		If n = 0 Then
		Scrivi aValori(1) & " | " & n & " | " & r & " ---> FORMAZIONE NON ANCORA USCITA",True,,,vbRed
		Else
		Scrivi aValori(1) & " | " & n & " | " & r,True,,,vbBlue
		End If
		For ess = ninizio To nfine
			id = GetInfoEstrazioneDL(ess)
			If VerificaEsitoDL(aCol,ess,Cl,1,esito,colpi,estratti,id) = True Then
			numestr = IndiceAnnualeDL(ess)
			data = Mid(GetInfoEstrazioneDL(id),15,11)
			ora = GetOraEstrazione(numestr)
			Call ScriviEdEvidenzia(id,aCol)
			Scrivi data & " " & ora & " " & numestr & " ",True,,,vbBlue
			End If
		Next
		Scrivi String(70,"-")
	Next
	Call Scrivi
	Call TestoInBandaPassante("Script Realizzato Da Moro_80",1,vbYellow,vbBlack)
End Sub
Function GetOraEstrazione(numestr)
Dim Ore
Dim TotMinuti
Dim MinutiRimanenti
TotMinuti =(numestr * 5)
Ore = TotMinuti / 60
MinutiRimanenti = TotMinuti Mod 60
GetOraEstrazione = FormattaStringa(Int(Ore),"00") & ":" & FormattaStringa(MinutiRimanenti,"00")
End Function
Sub ScriviEdEvidenzia(sStringaEstratti,aNumDaEvid)
Dim p
Dim xx
For p = 1 To 20
For xx = 1 To UBound(aNumDaEvid)
 If EstrattoDL(sStringaEstratti,p) = aNumDaEvid(xx) Then
 ColoreTesto 2
 End If
Next
 Scrivi Format2(EstrattoDL(sStringaEstratti,p)),1,0
 ColoreTesto 0
 Scrivi " ",0,0
Next
End Sub

Che ne dici?
 
Ultima modifica:
Benissimo ! Tuttavia non potrai sottrarti da ulteriori cazziatoni ... eehheh :-)

1)
cosa sarebbe la parentesi quadra che compare in questa input box ?



hosting immagini


2)

Mai sentito parlare di indentatura del codice ? :-) (mamma mia mi faccio paura da solo eheheh)

3)

questo pezzo di codice

Codice:
Sub ScriviEdEvidenzia(sStringaEstratti,aNumDaEvid)
	Dim p
	Dim xx
	For p = 1 To 20
		For xx = 1 To UBound(aNumDaEvid)
			If EstrattoDL( sStringaEstratti,p) = aNumDaEvid(xx) Then
				ColoreTesto 2
			End If
		Next
		Scrivi Format2(EstrattoDL(sStringaEstratti,p)),1,0
		ColoreTesto 0
		Scrivi " ",0,0
	Next
End Sub

le variabili dovrebbero avere un nome coerente col loro contenuto , è vero che l'avevo scritto io il prototipo , ma io prevedevo che
sStringaEstratti fossse appunto la stringa degli estratti , invece tu hai ottimamente implementato passando l'id dell'estrazione , quindi cambia nome alla variabile , lo so che funziona lo stesso ma il codice oltre che per il computer deve essere chiaro pure per il programmatore
che lo legge c he non è detto sia quello che lo ha scritto per la prima volta.

4)
Sempre nel pezzo di codice di cui sopra si puo fare un'ulteriore ottimizzazione per rendere lo script estrmamente piu performante

come vedi hai due cicli nidificati (ho levato le righe di codice in mezzo per chiarezza di lettura)

Codice:
	For p = 1 To 20
		For xx = 1 To UBound(aNumDaEvid)
			
		Next
		
	Next

facendo finta che UBound(aNumDaEvid) torna 3 in totale lo script elabora 60 cicli (20x3)

ebbene io ti dico che scrivendo il codice in un altro modo e usando uno stratageemma il tutto si potrebbe fare in solo 23
cicli invece che 60 ...
come fare ?
Indizio va preparato prima un array di boolean e le presenze vanno testate su quello ...

la cattedra è sempre aperta per chi si vuole guadagnare un 8 (se implemeta quest'ultimo suggerimento in modo corretto ) :-) ....


ciao
 
Ultima modifica di un moderatore:
x moro...

"resterò famoso in questo forum per essere il più "bacchettato" degli utenti :)"

non ti preccupare, ci siamo passati in tanti, ma simpaticamente ne siamo usciti .... "lavati di testa", si , ma carichi di nuove conoscenze.

buon proseguo, e "forza prof", se non altro per farti concorrenza..... sai la crisi è terribile e bisogna diversificare :cool::cool:.
 
Ultima modifica:
eheheh ...mi ricordo di una certa bacchetta .. c'era perfino scritto il nome sopra .. ahhaha :-) Comunque mi fa piacere aver creato altri mostri come il sottoscritto .-)
 
Ciao Luigi,
Le bacchettate per me sono e saranno a vita credo...

Comuque tornando alle Tue osservazioni posso dire:

- La 1 per il discorso parentesi quadra non saprei...a me non accade mai, ne a 1,ne a 2 e ne a 3 cifre per intenderci. (Sei sicuro che hai l'archivio "apposto" ?, o disabiliti aggiornamento e tutto per fare il test dello script?) Qui sto facendo io il maestro mi sà...:)

- La 2 sono d'accordo, il codice va sempre indentato, quindi la variabile sStringaEstratti va sostituita con sIdEstr.

- La 3 credo che Tu mi voglia davvero morto, già il 7+ me lo sogno e mi son preso ulteriori cazziatoni figuriamoci se implemento un array boolean e verifico su quello le presenze...L'indizio, per me, è un po' poco :)

Al di là di tutto mi sforzo di ragionare su quello che vorresti implementassi per il punto 3:

Dunque, io per verificare la colonna faccio come dici Tu due cicli nidificati il primo legge il numero X che va da 1 a 20 della colonna sviluppata il secondo poi va a vedere se il numero x è presente nella colonna filtro , il ciclo prima di uscire deve fare come indicato da Te in questo caso 60 iterazioni (20 x 3), qui pensandoci bene con quel array boolean tu vorresti creare una colonna che faccia da "filtro" messa giù in modo da rendere il tutto più veloce poi.
In questo caso qualora fosse da fare così il valore array del boolean deve essere di tutti i 90 elementi dove mi tornano come true (visto che parliamo di boolean) i numeri di questo "filtro" in modo da testare quest'ultimo a sua volta.
Stando a tutto questo si potrebbe poi fare un unico ciclo for del tipo:

Codice:
For p =1 to UBound(aNumDaEvid)
  If aFiltro (Colonna(p)) then 
  ColoreTesto 2
  End If
Next
 Scrivi Format2(EstrattoDL(sIdEstraz,p)),1,0
 ColoreTesto 0
 Scrivi " ",0,0

Dunque Colonna () è l'array da n° elementi che di volta in volta contiene la colonna da evidenziare;
Di conseguenza aFiltro () è un array da 90 elementi di tipo boolean come scritto prima.

Ovviamente è solo un ragionameno, non so come dichiarare quel cavolo di array boolean!


Ora puoi pure bacchettarmi, cazziarmi e altre cose che a Te piacciono tanto fare con i Tuoi alunni :)
 
Ultima modifica:
aaahaha mi hi preso per un professore sadomasoscript ? ahah comunque le bacchettate a quanto pare sono servite il ragionamento che hai fatto è corretto, eccone l'implementazione , niete 8 ma comunque ti sei guadagnato 7 e 1/2
ciao

Codice:
Sub ScriviEdEvidenzia(idEstr,aNumDaEvid)
	Dim p
	Dim xx
	Dim n
	ReDim aN(90)
	For xx = 1 To UBound(aNumDaEvid)
		aN(aNumDaEvid(xx)) = True
	Next
	For p = 1 To 20
		n = EstrattoDL(idEstr,p)
		If aN(n) Then
			Call Scrivi(Format2(n) & " ",1,0,,vbRed)
		Else
			Call Scrivi(Format2(n) & " ",1,0,,vbBlack)
		End If
		
	Next
	
End Sub


P.S.
Confermo la parentesi quadra dipendeva dal fatto che non facevo termianare l'aggiornamento dell'archivio...
ma giacche ci siamo tornando alla variabile ssStringaEstratti che vorresti chiamare sIdEstrazione , la s minuscola dovrebbe significare che la variabile contiene un vaslore stringa , in caso di valore numerico metti una n minuscola oppure come in questo caso id è inequivocabile.
 
Ultima modifica di un moderatore:
Ciao Luigi,
inutile dire che funziona alla grande, sono contento che almeno il ragionamento che avevo fatto è corretto, e anche del 7 e 1/2 perchè no! :)

Tranquillo non Ti ho preso per un professore "sadomasoscript" tranquillo :)

Per la nota sull' id è ovviamente corretto ragionare così e impostarla come hai fatto Tu.


Grazie ancora, alla prossima cazziatura! (scherzosamente parlando) Tutto fa scuola almeno per me......


Ciao
 
non era cosi difficile , ci eri arrivato perfettamente .. forse ti sei fatto impressionare dalle parole array di boolean ...:-) ciao
 
Ciao Luigi,
come va? tutto bene?

Mi sono riagganciato a questo post di qualche tempo fa, perchè volevo porre un altro quesito e fare, se possibile, un' implementamento allo script.
Nel dettaglio vorrei fare in modo di evidenziare non solo i numeri della formazione in esame, ma anche se in caso sono usciti solo 2 numeri o tre etc etc (in base allo sviluppo combinazioni che uno fa).

Mi spiego meglio con delle immagini:

Lo script attuale, da in output questo:
Adesso.jpg

In questo caso ho scelto di sviluppare delle formazioni di 3 numeri ed in rosso mi evidenzia i numeri usciti.

Domanda:

E' possibile fare in modo che mi evidenzi anche in un'altro colore se sono usciti solo 2 numeri??

Se avessi scelto di analizzare formazioni di 4 numeri, vorrei : in rosso 4 - in altro colore se solo 3 - in altro ancora se 2 e così via....


Secondo Te Luigi, o altri è possibile farlo?


Grazie a chi mi risponderà.
 

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