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à
Grazie!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
Romana
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
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.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
Notte
Lo spot che conosciamo dice \"Ti Piace vincere facile ? \" .. io rispondo SI !!!\"
Luigi, mi hai fregato sul tempo.
Scusa se ho anche datola soluzione....
Lo spot che conosciamo dice \"Ti Piace vincere facile ? \" .. io rispondo SI !!!\"
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
bene ! Bravo anche Cloud !! Un saluto a tutti e due ciao