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 dicembre 2025
    Bari
    78
    53
    62
    77
    16
    Cagliari
    15
    58
    32
    39
    24
    Firenze
    85
    20
    39
    32
    29
    Genova
    17
    60
    15
    33
    43
    Milano
    13
    39
    14
    15
    34
    Napoli
    82
    76
    15
    24
    73
    Palermo
    40
    55
    78
    26
    08
    Roma
    23
    41
    17
    53
    76
    Torino
    52
    20
    70
    59
    65
    Venezia
    43
    58
    19
    08
    09
    Nazionale
    71
    55
    60
    04
    35
    Estrazione Simbolotto
    Venezia
    28
    37
    27
    40
    10

Ultimi Messaggi

Indietro
Alto