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
    sabato 05 luglio 2025
    Bari
    25
    89
    22
    77
    56
    Cagliari
    05
    87
    46
    70
    49
    Firenze
    17
    85
    66
    59
    54
    Genova
    90
    65
    07
    44
    62
    Milano
    60
    84
    26
    78
    43
    Napoli
    71
    78
    86
    76
    84
    Palermo
    23
    42
    82
    60
    88
    Roma
    86
    60
    85
    19
    01
    Torino
    59
    30
    54
    29
    60
    Venezia
    90
    20
    71
    03
    81
    Nazionale
    70
    36
    74
    27
    38
    Estrazione Simbolotto
    Nazionale
    02
    32
    40
    16
    19
Indietro
Alto