Novità

Errore su script: Chi mi aiuta a capire?

Romana

Super Member >PLATINUM<
Ciao a tutti e complimenti per quello che fate.
Premetto che sono autodidatta in materia di script e che ho ancora molta strada da fare.... ma mi accontento.
Ho un piccolo problema che non riesco a risolvere pur avendo cercato nei vari post.
Ho "rivisitato" uno script di Adelino in questo post di Coconut http://forum.lottoced.com/f7/mamma-mia-che-fatica-90394/

Il listato mi funziona benissimo su L8+, ma quando lo faccio girare su Spaziometria (ultimissima versione installata
dopo aver disistallato la precedente - cosa che di solito non faccio)
mi da errore "9-Subscript out of range", pur eseguendo i calcoli.
Credo sia legato alla 5a posizione dell'estratto, perche se invece di

"For p1 = 1 To 5" scrivo "To 4" funziona tutto bene.

Chi mi aiuta a capire dove sbaglio?

Riporto anche qui
il listato per comodità
Codice:
Sub Main()
    Dim ruota(1),ruote(10),num1(2),posta(10),poste(2)
    posta(1) = 1
    posta(6) = 1
    posta(10) = 1
    poste(2) = 2
    ce = InputBox(" quante estrazione vuoi controllare? ","estrazione",100)
    k = InputBox("per quanti colpi?","colpi di gioco",13)
    ini = EstrazioneFin - ce
    fin = EstrazioneFin
    For es = ini To EstrazioneFin
        Messaggio "elab. estr. [" &(es) & "] di " & DataEstrazione(es,1)
        For p1 = 1 To 5
        ruota(1) = 1        '<------- ruota di calcolo
        'ruote(1) = 1        
        ruote(2) = 11                        
        r1 = ruota(1)
            a = Estratto(es,r1,p1)
            b = Estratto(es,r1,p1 + 1)
            If p1 = 5 Then
                a = Estratto(es,r1,5)
                b = Estratto(es,r1,1)
                End If
                
                If(a) = 1 Or(a) = 2 Or(a) = 3 Or(a) = 4 Or(a) = 5 Or(a) = 6 Or(a) = 7 Or(a) = 8 Or(a) = 9 Then
                    casi = casi + 1
                    Scrivi String(80,"=") & " by Coconut",1
                    Scrivi DataEstrazione(es,1) & " [ " & SiglaRuota(r1) & " - " & StringaEstratti(es,r1) & _
                    " ] [ " & Format2(a) & " ] in " & Format2(Posizione(es,r1,a)) & "^ pos."
                    Scrivi "                                       " & _
                     "[ " & Format2(b) & " ] In " & Format2(Posizione(es,r1,b)) & "^ pos."
                    Scrivi String(80,"-") & " caso n°" & casi
                    n1 = Fuori90(b + 90 - a)
                    n2 = Vert(n1)
                    num1(1) = n1
                    num1(2) = n2
                    ra1 = SerieRitardo(ini,es,num1,ruota,1)
                    ColoreTesto 2
                    Scrivi "Ritardo x Ambata sulla Ruota di  " & SiglaRuota(r1) & " = " & Format2(ra1)
                    ColoreTesto 0
                    ImpostaGiocata 1,num1,ruota,posta,k,1
                    ImpostaGiocata 2,num1,ruote,poste,k
                    Gioca es
                
            End If
        Next
    Next
    ScriviResoconto
    ColoreTesto 1
    Scrivi String(20,32) & "Giochino su bari by Coconut",1
    Scrivi String(45,32) & "Listato by Adelino",1
    ColoreTesto 0
End Sub

Grazie!
 
ciao mi meraviglio che in altro programma funzioni lo stesso perche qui c'è un errore che ora ti dico.
Forse l'altro programma filtra gli errori senza dirlo.
L'errore è in questa linea


b = Estratto(es,r1,p1 + 1)

vedrai che p1 è la variabile di controllo di un ciclo che va da 1 a 5
quindi quando p1 =5 la riga errata avrebbe questi valori

b = Estratto(es,r1, 5 + 1)

ora 5 +1 ovviamente fa 6 che è troppo alto per identificare una delle 5 posizioni estrazionali percio ti da errore di overflow
devi gestire meglio la lettura del numero successivo
 
Non devi sostituire il 5 con il 4, devi modificare la if in if else if

Codice:
Sub Main()
	Dim ruota(1),ruote(10),num1(2),posta(10),poste(2)
	posta(1) = 1
	posta(6) = 1
	posta(10) = 1
	poste(2) = 2
	ce = InputBox(" quante estrazione vuoi controllare? ","estrazione",100)
	k = InputBox("per quanti colpi?","colpi di gioco",13)
	ini = EstrazioneFin - ce
	fin = EstrazioneFin
	ruota(1) = 1 '<------- ruota di calcolo
	'ruote(1) = 1
	ruote(2) = 11
	r1 = ruota(1)
	For es = ini To EstrazioneFin
		Messaggio "elab. estr. [" &(es) & "] di " & DataEstrazione(es,1)
		For p1 = 1 To 5
			If p1 = 5 Then
				a = Estratto(es,r1,5)
				b = Estratto(es,r1,1)
			Else
				a = Estratto(es,r1,p1)
				b = Estratto(es,r1,p1 + 1)
			End If
			If(a) = 1 Or(a) = 2 Or(a) = 3 Or(a) = 4 Or(a) = 5 Or(a) = 6 Or(a) = 7 Or(a) = 8 Or(a) = 9 Then
				casi = casi + 1
				Scrivi String(80,"=") & " by Coconut",1
				Scrivi DataEstrazione(es,1) & " [ " & SiglaRuota(r1) & " - " & StringaEstratti(es,r1) & _
				" ] [ " & Format2(a) & " ] in " & Format2(Posizione(es,r1,a)) & "^ pos."
				Scrivi "                                       " & "[ " & Format2(b) & " ] In " & Format2(Posizione(es,r1,b)) & "^ pos."
				Scrivi String(80,"-") & " caso n°" & casi
				n1 = Fuori90(b + 90 - a)
				n2 = Vert(n1)
				num1(1) = n1
				num1(2) = n2
				ra1 = SerieRitardo(ini,es,num1,ruota,1)
				ColoreTesto 2
				Scrivi "Ritardo x Ambata sulla Ruota di  " & SiglaRuota(r1) & " = " & Format2(ra1)
				ColoreTesto 0
				ImpostaGiocata 1,num1,ruota,posta,k,1
				ImpostaGiocata 2,num1,ruote,poste,k
				Gioca es
			End If
		Next
	Next
	ScriviResoconto
	ColoreTesto 1
	Scrivi String(20,32) & "Giochino su bari by Coconut",1
	Scrivi String(45,32) & "Listato by Adelino",1
	ColoreTesto 0
End Sub

guarda bene la modifica al costrutto if e capirai che l'errore da Spazio, viene evidenziato perchè si trova con il p1 = p1+1= 6 e quindi scatta giustamente l'errore perche la posizione dell'estratto = 6 è fuori range (max5) poi la tua 2a if riporta le cose nella regola cambiando i valori di a e b ( nuove posizioni nel range) e quindi dandogli l'invio fa tutti i calcoli regolarmente. Non so se L8 ha la funzione di controllo di questi errori.

Notte
 
Un immenso grazie a Luigi e Claudio per la lezione!!
Ci stavo quasi arrivando.... e questo mi conforta...
ehhh se avessi le giornate di 48 ore, troverei anche il tempo di vedere bene le cose...
Di nuovo grazie!
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 15 settembre 2026
    Bari
    03
    02
    53
    44
    29
    Cagliari
    85
    81
    31
    53
    23
    Firenze
    27
    40
    34
    71
    81
    Genova
    55
    62
    72
    63
    27
    Milano
    79
    09
    49
    80
    68
    Napoli
    58
    90
    88
    77
    50
    Palermo
    45
    39
    22
    08
    31
    Roma
    39
    41
    04
    54
    63
    Torino
    53
    08
    80
    58
    54
    Venezia
    63
    51
    69
    09
    74
    Nazionale
    16
    45
    75
    60
    18
    Estrazione Simbolotto
    Palermo
    44
    32
    03
    31
    15
Indietro
Alto