Dim k As Long
    Dim Sorte As Long = CInt(InputBox("sorte di verifica ", , 2))
    ReDim aN(0) As Long  'Array(1, 2, 3, 4, 5, 6, 7)
    'Dim aRuote As Variant = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
    ReDim aruote(0) As Long
    aruote = ScegliRuote
    Dim Ris As STRUCT_VERIFICAESITO_RISULTATO
    Dim aTrovati () As STRUCT_STATISTICHE_TROVATI
    Dim colpidiricerca As Long
    Dim es As Long
    Dim esini As Long
    Dim esfin As Long
    Dim colpomassimo As Long
    colpomassimo = 0
    Dim casipositivi As Long
    Dim casinegativi As Long
    Dim casiincorso As Long
    Dim numerodivoltecheicolpidiricercasonostatisuperati As Long
    numerodivoltecheicolpidiricercasonostatisuperati = 0
    casipositivi = 0
    casinegativi = 0
    casiincorso = 0
    Dim colpirimanentiminimirispettocolpidiricerca As Long
    Dim colpirimanentiminimirispettocolpomassimo As Long
    colpirimanentiminimirispettocolpidiricerca = esfin
    colpirimanentiminimirispettocolpomassimo = esfin
    Dim colpirimanentiinteressanti As Integer
    Dim formazioneconcolpirimanentiminimiok As String
    Dim quanteestrazioniverificare As Long
    quanteestrazioniverificare = CInt(InputBox("quante ultime estrazioni verificare ", , 100))
    Dim classedisviluppo As Long
    classedisviluppo = CInt(InputBox("classe di sviluppo ", , 10))
    Dim colonnesviluppate As Long
    Dim cln As Long
    colpidiricerca = CInt(InputBox("colpi di ricerca ", , 3))
    Dim dafileodatabella As String = InputBox("i numeri da sviluppare e analizzare li prendi da file (f) o da tabella (t)", , "t")
    If dafileodatabella = "t" Then
    ScegliNumeri(aN)
    colonnesviluppate = InitSviluppoIntegrale(aN, classedisviluppo)
       If colonnesviluppate > 4005 Then
    MsgBox ("attenzione le formazioni integrali generate da questa tua scelta di sviluppo superano le 4.000 e non possono essere gestite per questo tipo di analisi. Scegliere un gruppo base + contenuto o una classe di sviluppo non inferiore ai 2 punti rispetto quella del gruppo base scelto ")
    'Stop
    'Exit
    End
    End If
    esfin = EstrazioneFin
    esini = EstrazioneFin - quanteestrazioniverificare
    Scrivi
    Scrivi "Script di TEST offerto dalla tom's bakery versione TWEENBASIC :-)"
    Select Case (dafileodatabella)
    Case "t"
    Scrivi "Modalità scelta per il recupero del gruppo base: tramite TABELLA"
    Case "f"
    Scrivi "Modalita' scelta per il recupero del gruppo base: tramite FILE TXT"
    Scrivi "File txt sorgente utilizzato " & sFileLunghette
    End Select
    Scrivi "Periodo analizzato " & GetInfoEstrazione(esini) & " - " & GetInfoEstrazione(esfin)
    Scrivi "Numero ultime estrazioni verificate " & esfin - esini
    Scrivi "Ruote scelte per la verifica " & NomeRuota(aruote)
    Scrivi "gruppo base analizzato " & StringaNumeri(aN) & " classe " & UBound (aN)
    Scrivi "Classe di sviluppo " & classedisviluppo
    Scrivi "Sorte minima di verifica " & Sorte
    Scrivi "Colpi di ricerca " & colpidiricerca
    Scrivi "Colonne sviluppate in modo integrale " & colonnesviluppate
    Scrivi
   ReDim aretcol(classedisviluppo) As Long
    'ReDim aretcol(90) As Long
If colonnesviluppate > 0 Then
Do While GetCombSviluppo(aretcol) = True
cln = cln + 1
 frmScript.lblMessaggio = " Enjoy with this little Script by tom :) - colonna elaborata n. " & cln & " su " & colonnesviluppate * UBound(aruote)
    For es = esini To esfin
    If VerificaEsito(aretcol, Sorte, es, Ris, aruote, , , aTrovati) Then
        Scrivi
        Scrivi "Esito al colpo " & Ris.ColpiUsati
        Scrivi "Sorte uscita " & Ris.EsitoTrovato
        Scrivi "Presenze " & Ris.Presenze
        Scrivi "PresenzeMult " & Ris.PresenzeMultiple
        Scrivi "Colpo massimo rilevato " & colpomassimo
        Scrivi
        casipositivi = casipositivi + 1
        For k = 1 To UBound(aTrovati)
            Scrivi (StringaNumeri(aTrovati(k).aNumeri) & " all'estrazione " & aTrovati(k).idEstrazione & " ruota  " & NomeRuota(aTrovati(k).idRuota))
        If Ris.ColpiUsati > colpomassimo Then
        colpomassimo = Ris.ColpiUsati
        End If
        If Ris.ColpiUsati > colpidiricerca Then
        Scrivi
        Scrivi " esito ottenuto con " & Ris.ColpiUsati - colpidiricerca & " colpi in + rispetto i " & colpidiricerca & " colpi di ricerca impostatati"
        Scrivi
        numerodivoltecheicolpidiricercasonostatisuperati = numerodivoltecheicolpidiricercasonostatisuperati + 1
        'casinegativi = casinegativi + 1
        End If
       If Ris.ColpiUsati > colpomassimo Then
        Scrivi
        Scrivi " esito ottenuto con " & Ris.ColpiUsati - colpomassimo & " colpi in + rispetto il valore " & colpomassimo & " di colpo massimo rilevato"
        Scrivi
        End If
        Next
    Else
        Scrivi
        Scrivi "Es. " & es & GetInfoEstrazione(es)
        Scrivi "Esito non trovato"
        Scrivi
        'Scrivi "colpi rimanenti " & colpidiricerca - Ris.ColpiUsati
        If colpidiricerca - Ris.ColpiUsati < 0 Then
            Scrivi
            Scrivi "Esito negativo ", True, , , 1
            Scrivi
            casinegativi = casinegativi + 1
            Else
            Scrivi
            Scrivi "Esito in corso...", True, , , 2
            Scrivi "colpi rimanenti rispetto colpi di ricerca " & colpidiricerca - Ris.ColpiUsati
            Scrivi "formazione interessata " & StringaNumeri(aretcol)
            If colpidiricerca - Ris.ColpiUsati < colpirimanentiminimirispettocolpidiricerca Then
            colpirimanentiminimirispettocolpidiricerca = colpidiricerca - Ris.ColpiUsati
            Scrivi "colpi rimanenti minimi rispetto colpi di ricerca " & colpirimanentiminimirispettocolpidiricerca
             If colpirimanentiminimirispettocolpidiricerca = 0 Then
            Scrivi "adesso i colpi rimanenti minimi rispetto i colpi di ricerca sono a 0!"
            End If
            End If
            Scrivi "colpi rimanenti rispetto colpo massimo " & colpomassimo - Ris.ColpiUsati
             If colpomassimo - Ris.ColpiUsati < colpirimanentiminimirispettocolpomassimo Then
            colpirimanentiminimirispettocolpomassimo = colpomassimo - Ris.ColpiUsati
            Scrivi "colpi rimanenti minimi rispetto colpomassimo " & colpirimanentiminimirispettocolpomassimo
            If colpirimanentiminimirispettocolpomassimo = 0 Then
            Scrivi "adesso i colpi rimanenti minimi rispetto colpo massimo sono a 0!"
            End If
            End If
            If colpirimanentiminimirispettocolpomassimo <= 3 Then
            colpirimanentiinteressanti = colpirimanentiminimirispettocolpomassimo
            formazioneconcolpirimanentiminimiok = StringaNumeri(aretcol)
            End If
            Scrivi
            casiincorso = casiincorso + 1
            End If
        End If
        Scrivi
Next
If bScriptInterrotto Then Exit Do
AvanzamentoElaborazione (cln, colonnesviluppate)
Loop
End If
     '------ fine sviluppo e analisi da tabella...
    Else
    'post relativo al code x leggere file in tweenbasic
    'https://forum.lottoced.com/threads/nuovo-ambiente-script-area-tecnica.2207989/post-2496263
'https://forum.lottoced.com/threads/nuovo-ambiente-script-area-tecnica.2207989/post-2496547  
 Dim sFileLunghette As String   ' percorso del file delle lunghette
 Dim sRecord As String ' stringa per leggere il file delle lunghette
 Dim sChrSep As String  ' carattere separatore dei numeri nel record della lunghetta
 sFileLunghette = ".\filediprova.txt"
 Dim f As Integer ' puntatore per aprire  il file delle lunghette
 Dim sLunghetta As String ' lunghetta originale che ha generatola riduzione
    sChrSep = "."
    'non permette la verifica di esiti multipli nel tempo...
    'si ferma al primo esito riscontrato...
        If FileExist(sFileLunghette) Then
            'If KillFile(sFileOut) Then
                f = FreeFile ' apro un puntatore libero
                Open sFileLunghette For Input As f ' apre i lfile
                Do Until EOF(f) ' cicla finche non diventa End Of File
                    Line Input #f, sRecord
                    sLunghetta = sRecord
    Scrivi "formazione letta da file txt " & sLunghetta
    Dim anumbase As Variant
    anumbase = Split(sLunghetta, ".")
    colonnesviluppate = InitSviluppoIntegrale(anumbase, classedisviluppo)
       If colonnesviluppate > 4005 Then
    MsgBox ("attenzione le formazioni integrali generate da questa tua scelta di sviluppo superano le 4.000 e non possono essere gestite per questo tipo di analisi. Scegliere un gruppo base + contenuto o una classe di sviluppo non inferiore ai 2 punti rispetto quella del gruppo base scelto ")
    'Stop
    'Exit
   End
    End If
    esfin = EstrazioneFin
    esini = EstrazioneFin - quanteestrazioniverificare
    Scrivi
    Scrivi "Script di TEST offerto dalla tom's bakery versione TWEENBASIC :-)"
    Select Case (dafileodatabella)
    Case "t"
    Scrivi "Modalità scelta per il recupero del gruppo base: tramite TABELLA"
    Case "f"
    Scrivi "Modalita' scelta per il recupero del gruppo base: tramite FILE TXT"
    Scrivi "File txt sorgente utilizzato " & sFileLunghette
    End Select
    Scrivi "Periodo analizzato " & GetInfoEstrazione(esini) & " - " & GetInfoEstrazione(esfin)
    Scrivi "Numero ultime estrazioni verificate " & esfin - esini
    Scrivi "Ruote scelte per la verifica " & NomeRuota(aruote)
    Scrivi "gruppo base analizzato " & StringaNumeri(aN) & " classe " & UBound (aN)
    Scrivi "Classe di sviluppo " & classedisviluppo
    Scrivi "Sorte minima di verifica " & Sorte
    Scrivi "Colpi di ricerca " & colpidiricerca
    Scrivi "Colonne sviluppate in modo integrale " & colonnesviluppate
    Scrivi
   ReDim aretcol(classedisviluppo) As Long
    'ReDim aretcol(90) As Long
If colonnesviluppate > 0 Then
Do While GetCombSviluppo(aretcol) = True
cln = cln + 1
 frmScript.lblMessaggio = " Enjoy with this little Script by tom :) - colonna elaborata n. " & cln & " su " & colonnesviluppate * UBound(aruote)
    For es = esini To esfin
    If VerificaEsito(aretcol, Sorte, es, Ris, aruote, , , aTrovati) Then
        Scrivi
        Scrivi "Esito al colpo " & Ris.ColpiUsati
        Scrivi "Sorte uscita " & Ris.EsitoTrovato
        Scrivi "Presenze " & Ris.Presenze
        Scrivi "PresenzeMult " & Ris.PresenzeMultiple
        Scrivi "Colpo massimo rilevato " & colpomassimo
        Scrivi
        casipositivi = casipositivi + 1
        For k = 1 To UBound(aTrovati)
            Scrivi (StringaNumeri(aTrovati(k).aNumeri) & " all'estrazione " & aTrovati(k).idEstrazione & " ruota  " & NomeRuota(aTrovati(k).idRuota))
        If Ris.ColpiUsati > colpomassimo Then
        colpomassimo = Ris.ColpiUsati
        End If
        If Ris.ColpiUsati > colpidiricerca Then
        Scrivi
        Scrivi " esito ottenuto con " & Ris.ColpiUsati - colpidiricerca & " colpi in + rispetto i " & colpidiricerca & " colpi di ricerca impostatati"
        Scrivi
        numerodivoltecheicolpidiricercasonostatisuperati = numerodivoltecheicolpidiricercasonostatisuperati + 1
        'casinegativi = casinegativi + 1
        End If
       If Ris.ColpiUsati > colpomassimo Then
        Scrivi
        Scrivi " esito ottenuto con " & Ris.ColpiUsati - colpomassimo & " colpi in + rispetto il valore " & colpomassimo & " di colpo massimo rilevato"
        Scrivi
        End If
        Next
    Else
        Scrivi
        Scrivi "Es. " & es & GetInfoEstrazione(es)
        Scrivi "Esito non trovato"
        Scrivi
        'Scrivi "colpi rimanenti " & colpidiricerca - Ris.ColpiUsati
        If colpidiricerca - Ris.ColpiUsati < 0 Then
            Scrivi
            Scrivi "Esito negativo ", True, , , 1
            Scrivi
            casinegativi = casinegativi + 1
            Else
            Scrivi
            Scrivi "Esito in corso...", True, , , 2
            Scrivi "colpi rimanenti rispetto colpi di ricerca " & colpidiricerca - Ris.ColpiUsati
            Scrivi "formazione interessata " & StringaNumeri(aretcol)
            If colpidiricerca - Ris.ColpiUsati < colpirimanentiminimirispettocolpidiricerca Then
            colpirimanentiminimirispettocolpidiricerca = colpidiricerca - Ris.ColpiUsati
            Scrivi "colpi rimanenti minimi rispetto colpi di ricerca " & colpirimanentiminimirispettocolpidiricerca
             If colpirimanentiminimirispettocolpidiricerca = 0 Then
            Scrivi "adesso i colpi rimanenti minimi rispetto i colpi di ricerca sono a 0!"
            End If
            End If
            Scrivi "colpi rimanenti rispetto colpo massimo " & colpomassimo - Ris.ColpiUsati
             If colpomassimo - Ris.ColpiUsati < colpirimanentiminimirispettocolpomassimo Then
            colpirimanentiminimirispettocolpomassimo = colpomassimo - Ris.ColpiUsati
            Scrivi "colpi rimanenti minimi rispetto colpomassimo " & colpirimanentiminimirispettocolpomassimo
            If colpirimanentiminimirispettocolpomassimo = 0 Then
            Scrivi "adesso i colpi rimanenti minimi rispetto colpo massimo sono a 0!"
            End If
            End If
            If colpirimanentiminimirispettocolpomassimo <= 3 Then
            colpirimanentiinteressanti = colpirimanentiminimirispettocolpomassimo
            formazioneconcolpirimanentiminimiok = StringaNumeri(aretcol)
            End If
            Scrivi
            casiincorso = casiincorso + 1
            End If
        End If
        Scrivi
Next
Loop
End If
If cln Mod 100 = 0 Then DoEvents
                        If bScriptInterrotto Then Exit Do
                        AvanzamentoElaborazione(cln, colonnesviluppate)
                Loop
                Close f ' chiude il file
End If ' x lettura file txt
End If ' da file o da tabella
Scrivi "Riassuntino finale"
    Scrivi
    Scrivi "Script di TEST offerto dalla tom's bakery versione TWEENBASIC :-)"
    Select Case (dafileodatabella)
    Case "t"
    Scrivi "Modalità scelta per il recupero del gruppo base: tramite TABELLA"
    Case "f"
    Scrivi "Modalita' scelta per il recupero del gruppo base: tramite FILE TXT"
    Scrivi "File txt sorgente utilizzato " & sFileLunghette
    End Select
    Scrivi "Periodo analizzato " & GetInfoEstrazione(esini) & " - " & GetInfoEstrazione(esfin)
    Scrivi "Numero ultime estrazioni verificate " & esfin - esini
    Scrivi "Ruote scelte per la verifica " & NomeRuota(aruote)
    Scrivi "Gruppo base analizzato " & StringaNumeri(aN) & " classe " & UBound (aN)
    Scrivi "Classe di sviluppo " & classedisviluppo
    Scrivi "Sorte minima di verifica " & Sorte
    Scrivi "Colpi di ricerca " & colpidiricerca
    Scrivi "Colonne sviluppate in modo integrale " & colonnesviluppate
    Scrivi
Scrivi "colpo massimo generale rilevato " & colpomassimo
Scrivi "casi positivi generali " & casipositivi
Scrivi "casi negativi generali " & casinegativi
Scrivi "casi in corso generali " & casiincorso
Scrivi "n. casi in cui i colpi di ricerca sono stati superati " & numerodivoltecheicolpidiricercasonostatisuperati
Dim casitotali As Long
   casitotali = casipositivi + casinegativi + casiincorso
   If casipositivi <> 0 Then
      Scrivi "%+ " & (casipositivi / casitotali) * 100
   End If
Scrivi
Scrivi "formazione con colpi rimanenti minimi interessanti (rispetto al colpo massimo) e <= 3 : " & formazioneconcolpirimanentiminimiok
Scrivi "colpi minimi interessanti relativi (rispetto al colpo massimo) " & colpirimanentiinteressanti
Scrivi
Scrivi "colpi rimanenti minimi rispetto colpi di ricerca " & colpirimanentiminimirispettocolpidiricerca
Scrivi "colpi rimanenti minimi rispetto colpo massimo " & colpirimanentiminimirispettocolpomassimo
Scrivi
Scrivi "Tt " & TempoElaborazioneSecondi
'------- output riassuntino finale anche in msgextra
    frmScript.msgextra = "Riassuntino finale " & _
    " Script di TEST offerto dalla tom's bakery versione TWEENBASIC :-)" & _  
    " Periodo analizzato " & GetInfoEstrazione(esini) & " - " & GetInfoEstrazione(esfin) & _
    " Numero ultime estrazioni verificate " & esfin - esini & " Ruote scelte per la verifica " & NomeRuota(aruote) & _
    " Gruppo base analizzato " & StringaNumeri(aN) & " classe " & UBound (aN) & _
    " Classe di sviluppo " & classedisviluppo & _
    " Sorte minima di verifica " & Sorte & _
    " Colpi di ricerca " & colpidiricerca & _
    " Colonne sviluppate in modo integrale " & colonnesviluppate & _
" colpo massimo generale rilevato " & colpomassimo & _
" casi positivi generali " & casipositivi & _
" casi negativi generali " & casinegativi & _
" casi in corso generali " & casiincorso & _
" n. casi in cui i colpi di ricerca sono stati superati " & numerodivoltecheicolpidiricercasonostatisuperati & _
" formazione con colpi rimanenti minimi interessanti (rispetto al colpo massimo) e <= 3 : " & formazioneconcolpirimanentiminimiok & _
" colpi minimi interessanti relativi (rispetto al colpo massimo) " & colpirimanentiinteressanti & _
" colpi rimanenti minimi rispetto colpi di ricerca " & colpirimanentiminimirispettocolpidiricerca & _
" colpi rimanenti minimi rispetto colpo massimo " & colpirimanentiminimirispettocolpomassimo & _
" Tt " & TempoElaborazioneSecondi
'    Select Case (dafileodatabella)
'     Case "t"
'     "Modalità scelta per il recupero del gruppo base: tramite TABELLA"
'     Case "f"
'     "Modalita' scelta per il recupero del gruppo base: tramite FILE TXT"
'     "File txt sorgente utilizzato " & sFileLunghette
'     End Select
' casitotali = casipositivi + casinegativi + casiincorso & _
' "%+ " & (casipositivi / casitotali) * 100 & _