Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Errore su script: Chi mi aiuta a capire?

  1. #1
    Senior Member
    Registrato dal
    May 2006
    Messaggi
    274

    Errore su script: Chi mi aiuta a capire?

    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 Mamma mia, che fatica !

    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!
    Romana

  2. #2
    Senior Member
    Registrato dal
    Sep 2009
    Messaggi
    4,036
    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

  3. #3
    Senior Member
    Registrato dal
    Mar 2010
    Messaggi
    2,074
    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
    Lo spot che conosciamo dice \"Ti Piace vincere facile ? \" .. io rispondo SI !!!\"

  4. #4
    Senior Member
    Registrato dal
    Mar 2010
    Messaggi
    2,074
    Luigi, mi hai fregato sul tempo.

    Scusa se ho anche datola soluzione....
    Lo spot che conosciamo dice \"Ti Piace vincere facile ? \" .. io rispondo SI !!!\"

  5. #5
    Senior Member
    Registrato dal
    May 2006
    Messaggi
    274
    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!
    Romana

  6. #6
    Senior Member
    Registrato dal
    Sep 2009
    Messaggi
    4,036
    bene ! Bravo anche Cloud !! Un saluto a tutti e due ciao

Discussioni simili

  1. errore script
    Da filippok9 nel forum Area Download
    Risposte: 20
    Ultimo messaggio: 21-08-2011, 16:46
  2. Spiegazione per errore script
    Da pfca nel forum Area Download
    Risposte: 21
    Ultimo messaggio: 03-07-2011, 23:14
  3. chi mi aiuta per uno script?
    Da Cavellini nel forum Area Download
    Risposte: 3
    Ultimo messaggio: 26-11-2010, 12:44
  4. x luigiB (script errore)
    Da giovanna55 nel forum Area Download
    Risposte: 1
    Ultimo messaggio: 23-10-2010, 10:05
  5. chi mi aiuta a capire?
    Da pegaso nel forum Lotto - Tarocchi & Numeri
    Risposte: 3
    Ultimo messaggio: 09-06-2009, 11:20

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •