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ì 16 settembre 2025
    Bari
    26
    29
    18
    10
    69
    Cagliari
    28
    35
    57
    44
    17
    Firenze
    19
    29
    49
    15
    17
    Genova
    23
    37
    13
    90
    58
    Milano
    33
    84
    76
    24
    79
    Napoli
    78
    15
    03
    24
    56
    Palermo
    80
    24
    41
    08
    75
    Roma
    55
    62
    83
    34
    69
    Torino
    27
    80
    69
    51
    84
    Venezia
    89
    74
    72
    82
    21
    Nazionale
    45
    20
    85
    33
    67
    Estrazione Simbolotto
    Palermo
    21
    19
    27
    36
    18

Ultimi Messaggi

Indietro
Alto