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 19 luglio 2025
    Bari
    70
    37
    36
    68
    01
    Cagliari
    57
    02
    64
    33
    41
    Firenze
    18
    62
    09
    05
    06
    Genova
    36
    10
    74
    37
    42
    Milano
    39
    07
    58
    23
    22
    Napoli
    18
    69
    28
    36
    40
    Palermo
    71
    66
    72
    64
    23
    Roma
    19
    64
    39
    77
    10
    Torino
    83
    63
    71
    08
    72
    Venezia
    51
    83
    26
    50
    74
    Nazionale
    89
    81
    63
    32
    03
    Estrazione Simbolotto
    Nazionale
    16
    32
    21
    19
    03

Ultimi Messaggi

Indietro
Alto