Novità

Per dirla alla "Austin Powers" sarebbe...

[TABLE="border: 0, cellpadding: 0, cellspacing: 0, width: 832"]
[TR]
[TD]
LOGOSILOP.gif
[/TD]
[/TR]
[TR]
[TD] [/TD]
[/TR]
[TR]
[TD]Ciao i legend ,[/TD]
[/TR]
[TR]
[TD]avevo già provato lo script di disaronno quando lo ha postato[/TD]
[/TR]
[TR]
[TD]e non andava bene e anche adesso non va bene.[/TD]
[/TR]
[TR]
[TD]========================[/TD]
[/TR]
[TR]
[TD]Ho usato la prima opzione quella con " Da file txt con lunghette"[/TD]
[/TR]
[TR]
[TD]sia sul sistema D(90) e sia gli altri, questo è l'output :[/TD]
[/TR]
[TR]
[TD]========================[/TD]
[/TR]
[TR]
[TD]Range analisi : [00001] [ 1 ] 07.01.1871-[05138] [ 26] 28.06.1969[/TD]
[/TR]
[TR]
[TD]Lunghette esaminate : 4005 Valide : 1[/TD]
[/TR]
[TR]
[TD]Sorte : Estratto[/TD]
[/TR]
[TR]
[TD]Ruote : BA[/TD]
[/TR]
[TR]
[TD]========================[/TD]
[/TR]
[TR]
[TD]lo spazio temporale non è quello della barra di SPMT[/TD]
[/TR]
[TR]
[TD]non elabora nessun ambo dei 4005 per la sorte dell'estratto.[/TD]
[/TR]
[TR]
[TD] [/TD]
[/TR]
[TR]
[TD]Mentre se faccio quello di Lotto_Tom sul lotto classico sistema D(90)[/TD]
[/TR]
[TR]
[TD]le stesse combinazioni cioè i 4005 ambi x estratto su ruota[/TD]
[/TR]
[TR]
[TD]delle prime tre opzioni (le altre tre più tre non non esce niente sempre con le stesse combinazioni)[/TD]
[/TR]
[TR]
[TD]Prima opzione :[/TD]
[/TR]
[TR]
[TD]Range analisi : [03950] [ 37] 14.09.1946-[09087] [142] 26.11.2015[/TD]
[/TR]
[TR]
[TD]Lunghette da esaminare : 4005[/TD]
[/TR]
[TR]
[TD]Sorte : Estratto[/TD]
[/TR]
[TR]
[TD]Ruote : BA[/TD]
[/TR]
[TR]
[TD] [/TD]
[/TR]
[TR]
[TD] [/TD]
[/TR]
[TR]
[TD]Lunghette Valide : 7[/TD]
[/TR]
[TR]
[TD]Lunghetta : .19.44[/TD]
[/TR]
[TR]
[TD]Ritardo : 51[/TD]
[/TR]
[TR]
[TD]RitMax : 51[/TD]
[/TR]
[TR]
[TD]Freq : 562[/TD]
[/TR]
[TR]
[TD]IncrRitMx : 13[/TD]
[/TR]
[TR]
[TD]IncrRitMaxSto : 13[/TD]
[/TR]
[TR]
[TD]s incrementi : 13.05.03.02.02.02.13[/TD]
[/TR]
[TR]
[TD]========================[/TD]
[/TR]
[TR]
[TD]Seconda opzione :[/TD]
[/TR]
[TR]
[TD]Range analisi : [03950] [ 37] 14.09.1946-[09087] [142] 26.11.2015[/TD]
[/TR]
[TR]
[TD]Lunghette da esaminare : 4005[/TD]
[/TR]
[TR]
[TD]Sorte : Estratto[/TD]
[/TR]
[TR]
[TD]Ruote : BA[/TD]
[/TR]
[TR]
[TD] [/TD]
[/TR]
[TR]
[TD] [/TD]
[/TR]
[TR]
[TD]Lunghette Valide : 7[/TD]
[/TR]
[TR]
[TD]Lunghetta : .17.22[/TD]
[/TR]
[TR]
[TD]Ritardo : 69[/TD]
[/TR]
[TR]
[TD]RitMax : 69[/TD]
[/TR]
[TR]
[TD]Freq : 576[/TD]
[/TR]
[TR]
[TD]IncrRitMx : 26[/TD]
[/TR]
[TR]
[TD]IncrRitMaxSto : 16[/TD]
[/TR]
[TR]
[TD]s incrementi : 06.16.01.09.05.04.26[/TD]
[/TR]
[TR]
[TD]Lunghette Valide : 7[/TD]
[/TR]
[TR]
[TD]Lunghetta : .44.47[/TD]
[/TR]
[TR]
[TD]Ritardo : 65[/TD]
[/TR]
[TR]
[TD]RitMax : 65[/TD]
[/TR]
[TR]
[TD]Freq : 580[/TD]
[/TR]
[TR]
[TD]IncrRitMx : 24[/TD]
[/TR]
[TR]
[TD]IncrRitMaxSto : 12[/TD]
[/TR]
[TR]
[TD]s incrementi : 08.12.03.01.24[/TD]
[/TR]
[TR]
[TD]Lunghette Valide : 7[/TD]
[/TR]
[TR]
[TD]Lunghetta : .22.47[/TD]
[/TR]
[TR]
[TD]Ritardo : 66[/TD]
[/TR]
[TR]
[TD]RitMax : 66[/TD]
[/TR]
[TR]
[TD]Freq : 601[/TD]
[/TR]
[TR]
[TD]IncrRitMx : 21[/TD]
[/TR]
[TR]
[TD]IncrRitMaxSto : 11[/TD]
[/TR]
[TR]
[TD]s incrementi : 09.03.11.03.07.01.21[/TD]
[/TR]
[TR]
[TD]Lunghette Valide : 7[/TD]
[/TR]
[TR]
[TD]Lunghetta : .30.44[/TD]
[/TR]
[TR]
[TD]Ritardo : 65[/TD]
[/TR]
[TR]
[TD]RitMax : 65[/TD]
[/TR]
[TR]
[TD]Freq : 582[/TD]
[/TR]
[TR]
[TD]IncrRitMx : 14[/TD]
[/TR]
[TR]
[TD]IncrRitMaxSto : 10[/TD]
[/TR]
[TR]
[TD]s incrementi : 05.10.14[/TD]
[/TR]
[TR]
[TD]Lunghette Valide : 7[/TD]
[/TR]
[TR]
[TD]Lunghetta : .22.44[/TD]
[/TR]
[TR]
[TD]Ritardo : 65[/TD]
[/TR]
[TR]
[TD]RitMax : 65[/TD]
[/TR]
[TR]
[TD]Freq : 593[/TD]
[/TR]
[TR]
[TD]IncrRitMx : 14[/TD]
[/TR]
[TR]
[TD]IncrRitMaxSto : 13[/TD]
[/TR]
[TR]
[TD]s incrementi : 11.13.09.02.05.14[/TD]
[/TR]
[TR]
[TD]Lunghette Valide : 7[/TD]
[/TR]
[TR]
[TD]Lunghetta : .44.48[/TD]
[/TR]
[TR]
[TD]Ritardo : 65[/TD]
[/TR]
[TR]
[TD]RitMax : 65[/TD]
[/TR]
[TR]
[TD]Freq : 615[/TD]
[/TR]
[TR]
[TD]IncrRitMx : 13[/TD]
[/TR]
[TR]
[TD]IncrRitMaxSto : 10[/TD]
[/TR]
[TR]
[TD]s incrementi : 10.09.13[/TD]
[/TR]
[TR]
[TD]Lunghette Valide : 7[/TD]
[/TR]
[TR]
[TD]Lunghetta : .19.44[/TD]
[/TR]
[TR]
[TD]Ritardo : 51[/TD]
[/TR]
[TR]
[TD]RitMax : 51[/TD]
[/TR]
[TR]
[TD]Freq : 562[/TD]
[/TR]
[TR]
[TD]IncrRitMx : 13[/TD]
[/TR]
[TR]
[TD]IncrRitMaxSto : 13[/TD]
[/TR]
[TR]
[TD]s incrementi : 13.05.03.02.02.02.13[/TD]
[/TR]
[TR]
[TD]========================[/TD]
[/TR]
[TR]
[TD]Terza opzione :[/TD]
[/TR]
[TR]
[TD]Range analisi : [03950] [ 37] 14.09.1946-[09087] [142] 26.11.2015[/TD]
[/TR]
[TR]
[TD]Lunghette da esaminare : 4005[/TD]
[/TR]
[TR]
[TD]Sorte : Estratto[/TD]
[/TR]
[TR]
[TD]Ruote : BA[/TD]
[/TR]
[TR]
[TD] [/TD]
[/TR]
[TR]
[TD] [/TD]
[/TR]
[TR]
[TD]Lunghette Valide : 7[/TD]
[/TR]
[TR]
[TD]Lunghetta : .19.44[/TD]
[/TR]
[TR]
[TD]Ritardo : 51[/TD]
[/TR]
[TR]
[TD]RitMax : 51[/TD]
[/TR]
[TR]
[TD]Freq : 562[/TD]
[/TR]
[TR]
[TD]IncrRitMx : 13[/TD]
[/TR]
[TR]
[TD]IncrRitMaxSto : 13[/TD]
[/TR]
[TR]
[TD]s incrementi : 13.05.03.02.02.02.13[/TD]
[/TR]
[TR]
[TD]========================[/TD]
[/TR]
[TR]
[TD] [/TD]
[/TR]
[TR]
[TD]Dovresti vedere un po tu dove sta l'errore nello script di disaronno[/TD]
[/TR]
[TR]
[TD]oppure[/TD]
[/TR]
[TR]
[TD]seguire le indicazioni del prof. LuigiB come far leggere[/TD]
[/TR]
[TR]
[TD]ed elaborare i 25 SVP aggiungendo le modifiche a quello di Lotto_tom ( che è quasi perfetto).[/TD]
[/TR]
[TR]
[TD]Se puoi e hai tempo disponibile per questo nostro passatempo.[/TD]
[/TR]
[TR]
[TD]========================[/TD]
[/TR]
[TR]
[TD]
stickman.gif
[/TD]
[/TR]
[TR]
[TD]Buona notte a tutti.[/TD]
[/TR]
[TR]
[TD]A presto[/TD]
[/TR]
[TR]
[TD]Silop ;) ;) ;)[/TD]
[/TR]
[/TABLE]
 
Ultima modifica:
Ciao luigi Ho fatto una prova stupida ( ma da qualche parte devo inizoare)
Codice:
Class clsProva 
Private m_A,m_B 
Public  property  get  Mio
Mio= m_A+m_B 
End  property 
Public  property  get  tuo
Tuo = dist
End property 
Sub init ( a,b)
m_A=a
M_B=b
End sub 
Function  dist
Dist =distanza  (m_A,m_B)
End function 

End  class 
Sub  main 
Dim  cls
Dim  a,b
Set cls= new clsProva 
Call cls.Init( a,b)
Call scrivi ( cls .Mio,1,0,vbblue )
Call  Scrivi  ( cls.Tuo,1,0,vbRed )
End  sub
E meglio scrivere la funzione oppure fare direttamente il calcolo?
Dovremmo fare degli esempi con
Public property Let mio ecc
Ciao e grazie
Spero di essermi spiegato altrimenti ti chiedo scusa :(
Notte :)
 
Ultima modifica:
Ciao silop non saprei ;
Anche magia Ha usato la stessa funzione per Vincenzo e credo vada bene :)
Il problema che mi è impossibile postare script così lunghi.
Magia per favore potresti valutare tu il problema?
È la stessa funziona scritta da luigi e che hai utilizzato per i tuoi file di testo.

Vediamo se domani riesco :)
Intanto la funzione dei filtri:
Codice:
Function  idFiltro 
Dim aFiltro 
aFiltro =array ("IncrRitMaxSto = mIncrRitMaxCr","IncrRitMaxSto  < =  IncrRitMaxCr ", " IncrRitMaxSto  >  =  IncrRitMaxCr  ")
IdFiltro =ScegliOpzioneMenu ( aFiltro, 0,"Select Filtro Condizione  ")
End function
Questo si passa da init e si riscrive isCondizioneRispettata
A domani:)
 
Ultima modifica:
Nella sub main
Dim Filtro
Filtro = idFiltro
Call clsL.Init ( aLunghette, sChrSep, Inizio, Fine, aRuote, Sorte, Filtro )


Nella classe
Private mFiltro
Sub init ( sLunghetta, sChrSep, RangeInizio, RangeFine, vetRuote, SorteInGioco, iFiltro)
mFiltro =iFiltro
Tutto il resto del codice
End sub
Function IsCondizioneRispettata
Dim nUpper, Ris
nUpper = UBound ( aElencoIncrRitMax )
MIncrRitMaxSto = massimov ( aElencoIncrRitMax, 1, nUpper - 1 )
Select case mFiltro
Case 0
Ris= (mIncrRitMaxSto = aElencoIncrRitMax ( nUpper ) )
Case 1
Ris =( mIncrRitMaxSto < = aElencoIncrRitMax ( nUpper ) )
Case 2
Ris= (mIncrRitMaxSto > = aElencoIncrRitMax ( nUpper ) )
End Select
If aElencoRit ( ubound ( aElencoRit ) ) > 0 and aIdEstrIncrRitMax ( nUpper ) = mFine Then
IsCondizioneRispettata = Ris
Else
IsCondizioneRispettata = False
End If
End Function

Così funziona senza scrivere tantissime linee di codice
Cuao:)
 
ciao Legend , ora ho capito. In pratica tu mi chiedi se il risultato tornato da una property è meglio ottenerlo con l'assegnazione di una variabile o con il risultato di un calcolo.

se è cosi ti dico che ci sono pro e contro anche se impercettbili.

fare il calcolo richiede piu tempo che assegnare il valore di una variabile,non consuma memoria e il risultato è sempre pertinente ai valori con i quali è stato calcolato

creare una variabile apposta per memorizzare il valore da passare poi alla proprietà interogata quando questo si puo ricalcolare con i dati gia in possesso fa uno spreco di memoria e costringe a riaggiornare il valore della variabile quando i valori usati per l'operazione che ne calcolava il valore sono cambiati.

per il problema di Silop , lo script fatto da Di Saronno va benissimo, l'anomalia nasce dal fatto che il range di analisi quando si usano i sistemi virtuali non si puo prendere da estrazioneini e estrazionefin per il semplice fatto che gli archivi virtuali spesso sono calcolati da una data specifica e quindi hanno meno estrazioni .dell'archivio reale .(si tratta dell'insidia di cui ti parlavo) quindi se il range della barra rosa fossse impostato da 5000 a 9000 questi id andrebebro bene per l'archivio normale ma non per i virtuali come quelli calcolati adesempio dalla 3950.
In questo caso infatti (facendo finta che le estrazioni totali dell'archivio reale fossero 9000) le estrazioni del virtuale sarebbero (9000- 3950)+1 = 5051 e se estrazioneini e estrazionefin ci tornano 5000 e 9000 è ovvio che identifichino un range sbagliato.
Di Saronno ha risolto facendo sempre la statistica su tutto l'archivio.


host immagini

ora mi viene in mente che posso creare una nuova istruzione che serva a scegliere il range in modo dinamico
tipo scegliruote , sceglinumeri ..ecc .. ora implementerò sceglirrange per risolvere il problema in modo piu elegante..
non che gia cosi non si possa trovare uan soluzione adeguata ma sceglirange mi sembra ancora meglio
specie per farmi passare uan mezz'oretta :-) dopo postero lo script con la modifica.
 
Ultima modifica di un moderatore:
Buon giorno luigi:)
La funzione la inserisci in spaziometria?
Grazie per la risposta :)
Nell ottimizzazione un bravo programmatore penserebbe alla velocità o alla memoria?
Un altra domanda :)
Nella nuova funzione isCondizioneRispettata
Ho portato il Select case
Dentro if
In modo da fare la scelta solo quando la prima condizione è rispettata, questo mi ottimizza un po oppure è indifferente?
Scusa ma come studente sono peggio dei prof rompiballe :)
Buona domenica a tutti :)
 
X tom
Che dati non riesci a manipolare?
La stringa degli incrementi non ti torna?
Pensavo per te fosse importante prima la calcolavi manualmente,
Non è corretta?
Se mi spieghi ,scusa non ho capito ci lavoro su.
Pezzo alla volta.
Ma dopo bisogna riportare tutto in uno script finale per non rovinare l efficienza e l eleganza dello script.
Aspetto tue direttive:)
Buona domenica :)
 
cial legend ti devi assolutamente attrezzare per poter postare gli script col copia e incolla da spaziometria al forum , senno non ti seguo ... ho visto che tom ha fattto delle modifiche creando una discreta ridondanza di codice , tu lo hai corretto poi Di Saronno ha implementato gli archivi virtuali.io mi sono accorto che una funzione ha perso un pezzo ...qui è difficile seguire..
fai una cosa por favor :
prendi lo script di Di Saronno , mettici le correzzioni che hai fatto tu (sia le tue he quelle di tom)
poi posta nuovamente lo script che sara quello ufficiale ..e su quello fammi le domande.
La nuova funzione sarà ovviamente presente in spazioemtria tra quelle nuove dello spazioscript quindi per averla bisogna aggiornare .. appena implementata la inserisco nello script ufficiale che fino a quando non posti il tuo con le correzzionei che t ho detto per me rimane quello postato da Di Saronno.. ciao .. e buona domenica anche a te ..
 
i legend;n1939703 ha scritto:
X tom
Che dati non riesci a manipolare?
La stringa degli incrementi non ti torna?
Pensavo per te fosse importante prima la calcolavi manualmente,
Non è corretta?
Se mi spieghi ,scusa non ho capito ci lavoro su.
Pezzo alla volta.
Ma dopo bisogna riportare tutto in uno script finale per non rovinare l efficienza e l eleganza dello script.
Aspetto tue direttive:)
Buona domenica :)



Ciao mitico i legend! Buona Domenica a Te e Tutti Quanti! :D
Dunque... resterebbero da poter gestire.... i singoli incrementi... che ti evidenzio in rosso in questa 4ina di esempio...

Lunghetta : 1.7.11.80

Ritardo : 37
RitMax : 37
Freq : 154
IncrRitMx : 9
IncrRitMaxSto : 9
s incrementi : 09.07.03.01.06.09


Nel senso che sarebbe bello si potesse dire... allo script anche qualcosa del genere... "Mostrami solo le formazioni che hanno TOT (es. 6 incrementi (come nel caso sopra)" oppure "Mostrami solo le formazioni che hanno un numero di incrementi singoli (s incrementi) >=10 ecc... tipo...


s incrementi : 09.07.03.01.06.09.02.01.03.09.09 <- es. con 11 incrementi singoli...



Se non sono stato ancora abbastanza chiaro non ti peritare a farmelo sapere eh grandissimo? ;)

Colgo l'occasione per buttare giu' un'altra richiestuzza per i TUTTI i BIG PROGRAMMERS in ascolto... (probabilmente creerò anche un thread relativo) ma visto che vi state riunendo anche qui è più facile che venga vista... :rolleyes: :D

Ho notato che c'è un'enorme difficoltà nel trovare siti (ne conosco solo 2 questo forum e un altro) per quanto riguarda la possibilità di verificare dinamicamente con l'ultima estrazione qualsiasi gruppo numerico eventualmente giocato.

Mi stavo domandando se una tabella colorata (già presente al momento in quasi ogni sezione di spaziometria) potesse assolvere a questo scopo... permettendo di copiarvi come avviene già adesso qualsiasi tipo di combinazione numerica (eventualmente giocata) e verificando eventuali vincite cliccando su un apposito pulsantino "verifica risultati" con l'ultima estrazione in corso...


Di seguito un piccolo screen shot per visualizzare il prototipo di verificatore "spaziometrico :p" che avrei in mente :D. Se c'è già implementato nel programma e non l'ho ancora visto vi prego di indicarmi dove sia ;) GRAZIE


Di nuovo Buona Domenica a Tutti/e and see you soon :)


verificatore-spaziometrico1e2.jpg
 

Allegati

  • verificatore-spaziometrico1e2.jpg
    verificatore-spaziometrico1e2.jpg
    43,8 KB · Visite: 1
Ultima modifica:
Ciao tom sto ricompila no lo script con le midifiche perfavore mi sai dire la richiesta degli incrementi?
Vuoi selezionare solo le formazioni che hanno un tot di incrementi? Se si quanti?
Ciao luigi ci provo
 
i legend;n1939758 ha scritto:
Ciao tom sto ricompila no lo script con le midifiche perfavore mi sai dire la richiesta degli incrementi?
Vuoi selezionare solo le formazioni che hanno un tot di incrementi? Se si quanti?
Ciao luigi ci provo


Ciao i legend , si sarebbe bello poter anche estrapolare volendo... solo le formazioni che hanno un tot di incrementi (il range di scelta dovrebbe andare... da 1 a enne mila... :D) scherzo da 1 a 50 credo basti... e avanzi... :p :) Ciao grandissimo! ;)
 
Ultima modifica:
Scusa tom non avevo visto il post.
Ok ma che ne dici se mettiamo un numero di default?
Fare un altro input box diventa un caOS per chi non ha dimestichezza
Fai le tue prove poi mi fai sapere
Allora nella function is condizione rispettata
Sostituisci
If aElencoRit ( ubound ( aElencoRit ) ) > 0 and aIdEstrIncrRitMax ( nUpper ) = mFine Then
Con

If aElencoRit ( ubound ( aElencoRit ) ) > 0 and aIdEstrIncrRitMax ( nUpper ) = mFine and nUpper >=6 then
Se vuoi di più cambi 6 con 10 0 quanto vuoi tu
Fammi sapere.
Buon pranzo :)
 
Ciao luigi Ho provato numeri casuali confrontato con scegli numeri
Ovviamente nello sviluppo integrale non ci sono ripetizioni
Na in quello casuale si.
Esempio
Con scegli numeri
Su bari filtro 4 coppie per estratto
Se con numeri casuali netto limite 4 che è il valore massimo
Rintraccia solo 3 condizioni perché esce a 4 ed uno è un valore ripetuto:)
Ciao:)
Adesso arrivi anche alla funzione dei virtuali.
Intanto Buon pranzo:)
 
ciao a tutti;)
vedete se i nomi coincidono;)
ciao a tutti
Codice:
Option Explicit
Class clsLunghetta
' Controllare sempre Salvo Errori

    Private aNumeri
    Private mInizio,mFine,aRuote,mSorte
    Private mClasse
    Private aElencoRit
    Private aIdEstrElencoRit
    Private aElencoIncrRitMax
    Private aIdEstrIncrRitMax
    Private aRitardiAllIncremento
    Private mRitardo,mRitardoMax,mIncrRitMax,mFrequenza,mIncrRitardoMaxStorico,mStrIncRitMax
    Private mFiltro
    Public Property Get Ritardo
        Ritardo = mRitardo
    End Property
    Public Property Get RitardoMax
        RitardoMax = mRitardoMax
    End Property
    Public Property Get IncrRitMax
        IncrRitMax = mIncrRitMax
    End Property
    Public Property Get Frequenza
        Frequenza = mFrequenza
    End Property
    Public Property Get IncrRitMaxSto
        IncrRitMaxSto = mIncrRitardoMaxStorico
    End Property
    Public Property Get StrIncRitMax
        StrIncRitMax = mStrIncRitMax
    End Property
    Public Property Get StrIncrementi
        StrIncrementi = StringaNumeri(aElencoIncrRitMax,,True)
    End Property
    Public Property Get StrFormazione
        StrFormazione = StringaNumeri(aNumeri,,True)
    End Property
    Sub Init(sLunghetta,sCharSep,RangeInizio,RangeFine,VetRuote,sorteInGioco,iFiltro)
        mInizio = RangeInizio
        mFine = RangeFine
        aRuote = VetRuote
        mSorte = sorteInGioco
        mFiltro = iFiltro
        Call AlimentaVettoreLunghetta(sLunghetta,sCharSep)
        Call ElencoRitardiTurbo(aNumeri,aRuote,mSorte,mInizio,mFine,aElencoRit,aIdEstrElencoRit)
        Call AlimentaVettoreIncrRitMax
    End Sub
    Sub EseguiStatistica
        Call StatisticaFormazioneTurbo(aNumeri,aRuote,mSorte,mRitardo,mRitardoMax,mIncrRitMax,mFrequenza,mInizio,mFine)
    End Sub
    Private Sub AlimentaVettoreLunghetta(sLunghetta,sCharSep)
        Dim k
        If IsArray(sLunghetta) Then
            ReDim anumeri(UBound(sLunghetta))
            For k = 1 To UBound(sLunghetta)
                anumeri(k) = sLunghetta(k)
            Next
        Else
            Call SplitByChar((sCharSep & sLunghetta),sCharSep,anumeri)
        End If
        mClasse = UBound(anumeri)
    End Sub
    Private Sub AlimentaVettoreIncrRitMax
        Dim nRitMax,nIncr,nId,k
        nId = 0
        ReDim aElencoIncrRitMax(0)
        ReDim aIdEstrIncrRitMax(0)
        ReDim aRitardiAllIncremento(0)
        For k = 1 To UBound(aElencoRit)
            If aElencoRit(k) > nRitMax Then
                If nRitMax > 0 Then
                    nIncr = aElencoRit(k) - nRitMax
                    nId = nId + 1
                    ReDim Preserve aElencoIncrRitMax(nId)
                    aElencoIncrRitMax(nId) = nIncr
                    ReDim Preserve aIdEstrIncrRitMax(nId)
                    aIdEstrIncrRitMax(nId) = aIdEstrElencoRit(k)
                    ReDim Preserve aRitardiAllIncremento(nId)
                    aRitardiAllIncremento(nId) = aElencoRit(k)
                End If
                nRitMax = aElencoRit(k)
            End If
        Next
        mStrIncRitMax = StringaNumeri(aElencoIncrRitMax,,True)
    End Sub
    Function IsCondizioneRispettata
        Dim nUpper,Ris
        nUpper = UBound(aElencoIncrRitMax)
        mIncrRitardoMaxStorico = MassimoV(aElencoIncrRitMax,0,nUpper - 1)
        ' condizioni di filtro:
        '1)Ultimo ritardo >0
        '2)IncrRitMax e nell ultima estrazione esaminata
        '3) Vengono considerate solo le formazioni che hanno avuto almeno sei incrementi del rit max sto
        If aElencoRit(UBound(aElencoRit)) > 0 And aIdEstrIncrRitMax(nUpper) = mFine And nUpper >= 6 Then
            Select Case mFiltro
            Case 0
            ' incremento massimo storico è uguale all incremento Massimo corrente
                Ris =(mIncrRitardoMaxStorico = aElencoIncrRitMax(nUpper))
            Case 1
                Ris =(mIncrRitardoMaxStorico <= aElencoIncrRitMax(nUpper))
            Case 2
                Ris =(mIncrRitardoMaxStorico >= aElencoIncrRitMax(nUpper))
            End Select
            IsCondizioneRispettata = Ris'
        Else
            IsCondizioneRispettata = False
        End If
    End Function
    Sub DisegnaGraficoIncrRitMax
        Dim x,y,k
        Dim nValoreMaxX,nValoreMaxY,nValoreMinX
        Dim nStepX,nStepY
        Dim nUpperVetIncrRit
        nValoreMinX = MinimoV(aIdEstrIncrRitMax,1)
        nValoreMaxX = aIdEstrIncrRitMax(UBound(aIdEstrIncrRitMax))
        nValoreMaxY = MassimoV(aElencoRit,1)
        nStepX =(nValoreMaxX -(mInizio - 1))\10
        nStepY = nValoreMaxY\10
        Call PreparaGrafico("Formazione : " & StringaRuote(aRuote) & "  " & StringaNumeri(aNumeri),nValoreMinX,nValoreMaxX,0,nValoreMaxY,nStepX,nStepY)
        nUpperVetIncrRit = UBound(aElencoIncrRitMax)
        ReDim aV(nUpperVetIncrRit - 1,2)
        For k = 1 To nUpperVetIncrRit
            x = aIdEstrIncrRitMax(k)
            y = aElencoIncrRitMax(k)
            aV(k - 1,1) = x
            aV(k - 1,2) = y
        Next
        Call DisegnaLineaGrafico(aV,vbRed,"EstrIncrRitMax")
        ReDim aV(nUpperVetIncrRit - 1,2)
        For k = 1 To nUpperVetIncrRit
            x = aIdEstrIncrRitMax(k)
            y = aRitardiAllIncremento(k)
            aV(k - 1,1) = x
            aV(k - 1,2) = y
        Next
        Call DisegnaLineaGrafico(aV,vbBlue,"RitMax")
        Call InserisciGrafico
    End Sub
End Class
Sub Main
    Dim Inizio,Fine,aRuote,Sorte
    Dim sDir,sFile,sFileCompleto
    sDir = GetDirectoryAppData & "ArchiviVirtuali\"
    sFile = ScegliFileArchivioVirt(sDir)
    If sFile <> "" Then
        sFileCompleto = sDir & sFile & ".dat"
        Inizio = 1
        Fine = QuantitaEstrazioniInFile(sFileCompleto)
        Sorte = ScegliEsito
        Call ScegliRuote(aRuote,Nothing)
        If(Fine > Inizio) And UBound(aRuote) > 0 And Sorte > 0 Then
            Select Case ScegliTipoSviluppo
            Case 1
                Call AnalisiLunghetteFromFileTxt(Inizio,Fine,aRuote,Sorte)
            Case 2
                Call AnalisiLunghetteFromNumeriCasuali(Inizio,Fine,aRuote,Sorte)
            Case 3
                Call AnalisiLunghetteFromScegliNumeri(Inizio,Fine,aRuote,Sorte)
            End Select
        End If
    End If
End Sub
Function ScegliTipoSviluppo
    ReDim aVoci(3)
    aVoci(1) = "Da File txt con lunghette"
    aVoci(2) = "Da sviluppo casuale"
    aVoci(3) = "ScegliNumeri"
    ScegliTipoSviluppo = ScegliOpzioneMenu(aVoci,1)
End Function
Function GetChrSepFromRiga(sRiga)
    Dim k,schr
    schr = " "
    For k = 1 To Len(sRiga)
        schr = Mid(sRiga,k,1)
        If IsNumeric(schr) = False Then
            Exit For
        End If
    Next
    GetChrSepFromRiga = schr
End Function
Sub AnalisiLunghetteFromFileTxt(Inizio,Fine,aRuote,Sorte)
    Dim sFile,aLunghette,nTotLunghette
    Dim k,sChrSep,id
    Dim clsL,collLunghette
    Dim Filtro
    Filtro = GetidFiltro
    Set collLunghette = GetNewCollection
    sFile = ScegliFile(GetDirectoryAppData,".txt")
    If FileEsistente(sFile) Then
        Call LeggiRigheFileDiTesto(sFile,aLunghette)
        nTotLunghette = UBound(aLunghette)
        If nTotLunghette > 0 Then
            sChrSep = GetChrSepFromRiga(aLunghette(1))
            id = 0
            For k = LBound(aLunghette) To nTotLunghette
                id = id + 1
                Set clsL = New clsLunghetta
                Call clsL.Init(aLunghette(k),sChrSep,Inizio,Fine,aRuote,Sorte,Filtro)
                If clsL.IsCondizioneRispettata Then
                    Call clsL.EseguiStatistica
                    collLunghette.Add clsL
                End If
                If k Mod 50 = 0 Then
                    Call Messaggio("Righe esaminate " & k)
                    Call AvanzamentoElab(1,nTotLunghette,k)
                    If ScriptInterrotto Then Exit For
                End If
            Next
            Scrivi "Range Analisi       : " & GetInfoEstrazione(Inizio) & " - " & GetInfoEstrazione(Fine)
            Scrivi "Lunghette Esaminate : " & nTotLunghette + 1 & " Valide : " & collLunghette.count
            Scrivi "Sorte               : " & NomeSorte(Sorte)
            Scrivi "Ruote               : " & StringaRuote(aRuote)
            Scrivi
            If collLunghette.count > 0 Then
                Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
                For Each clsL In collLunghette
                    Call Scrivi("Formazione esaminata : " & clsL.Strformazione)
                    Call Scrivi("Ritardo              : " & clsL.Ritardo)
                    Call Scrivi("RitMax               : " & clsL.Ritardomax)
                    Call Scrivi("Freq                 : " & clsL.Frequenza)
                    Call Scrivi("IncrRitMax           : " & clsl.IncrRitMax)
                    Call Scrivi("IncrRitMaxSto        : " & clsL.IncrRitMaxSto)
                    Call Scrivi("aArrayIncrRitMax     : " & clsL.StrIncrementi)
                    Scrivi
                    Call clsL.DisegnaGraficoIncrRitMax
                Next
            Else
                Scrivi "Nessuna lunghetta rispetta le condizioni "
                Scrivi "Lunghette esaminate " & nTotLunghette + 1
            End If
        End If
    End If
End Sub
Sub AnalisiLunghetteFromNumeriCasuali(Inizio,Fine,aRuote,Sorte)
    Dim sFile,aLunghette,nTotLunghette,nClasse
    Dim nTrov,nProdotte
    Dim clsL,collLunghette
    Dim Filtro
    Filtro = GetidFiltro
    Set collLunghette = GetNewCollection
    nTotLunghette = Int(InputBox("Quanti lunghette devono essere trovate?",,4))
    nClasse = Int(InputBox("Quanti numeri nella lunghetta?",,Sorte))
    If nTotLunghette > 0 And nClasse >= Sorte And nClasse <= 10 Then
        nTrov = 0
        nProdotte = 0
        Do While nTrov < nTotLunghette
            Set clsL = New clsLunghetta
            ReDim aNum(nClasse)
            Call GetColonnaCasuale(nClasse,aNum)
            nProdotte = nProdotte + 1
            Call clsL.Init(aNum," ",Inizio,Fine,aRuote,Sorte,Filtro)
            If clsl.IsCondizioneRispettata Then
                Call clsL.EseguiStatistica
                collLunghette.Add clsL
                nTrov = nTrov + 1
            End If
            If nProdotte Mod 50 = 0 Then
                Call Messaggio("Combinazioni esaminate " & nProdotte & " Valide " & nTrov)
                Call DoEventsEx
                'Call AvanzamentoElab(1,nTotLunghette,k)
                If ScriptInterrotto Then Exit Do
            End If
        Loop
        Scrivi "Range Analisi       : " & GetInfoEstrazione(Inizio) & " - " & GetInfoEstrazione(Fine)
        Scrivi "Lunghette Esaminate : " & nTotLunghette & " Valide : " & collLunghette.count
        Scrivi "Sorte               : " & NomeSorte(Sorte)
        Scrivi "Ruote               : " & StringaRuote(aRuote)
        Scrivi
        If collLunghette.count > 0 Then
            Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
            For Each clsL In collLunghette
                Call Scrivi("Formazione esaminata : " & clsL.Strformazione)
                Call Scrivi("Ritardo              : " & clsL.Ritardo)
                Call Scrivi("RitMax               : " & clsL.Ritardomax)
                Call Scrivi("Freq                 : " & clsL.Frequenza)
                Call Scrivi("IncrRitMax           : " & clsl.IncrRitMax)
                Call Scrivi("IncrRitMaxSto        : " & clsL.IncrRitMaxSto)
                Call Scrivi("aArrayIncrRitMax     : " & clsL.StrIncrementi)
                Scrivi
                Call clsL.DisegnaGraficoIncrRitMax
            Next
        Else
            Scrivi "Nessuna lunghetta rispetta le condizioni "
            Scrivi "Lunghette esaminate " & nProdotte
        End If
    End If
End Sub
Sub AnalisiLunghetteFromScegliNumeri(Inizio,Fine,aRuote,Sorte)
    Dim nTotLunghette
    Dim k,sChrSep,nClasse
    Dim clsL,collLunghette
    ReDim aLunghette(0)
    Dim Filtro
    Filtro = GetidFiltro
    Set collLunghette = GetNewCollection
    sChrSep = " "
    ScegliNumeri(aLunghette)
    nClasse = Int(InputBox("Quanti numeri nella lunghetta?",,3))
    nTotLunghette = InitSviluppoIntegrale(aLunghette,nClasse)
    k = 0
    Do While GetCombSviluppo(aLunghette)
        k = k + 1
        Set clsL = New clsLunghetta
        Call clsL.Init(aLunghette,sChrSep,Inizio,Fine,aRuote,Sorte,Filtro)
        If clsL.IsCondizioneRispettata Then
            Call clsL.EseguiStatistica
            collLunghette.Add clsL
        End If
        If k Mod 50 = 0 Then
            Call Messaggio("Righe esaminate " & k & " Valide " & collLunghette.count)
            DoEventsEx
            Call AvanzamentoElab(1,nTotLunghette,k)
            If ScriptInterrotto Then Exit Do
        End If
    Loop
    Scrivi "Range Analisi       : " & GetInfoEstrazione(Inizio) & " - " & GetInfoEstrazione(Fine)
    Scrivi "Lunghette Esaminate : " & nTotLunghette & " Valide : " & collLunghette.count
    Scrivi "Sorte               : " & NomeSorte(Sorte)
    Scrivi "Ruote               : " & StringaRuote(aRuote)
    Scrivi
    If collLunghette.count > 0 Then
        Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
        For Each clsL In collLunghette
            Call Scrivi("Formazione esaminata : " & clsL.Strformazione)
            Call Scrivi("Ritardo              : " & clsL.Ritardo)
            Call Scrivi("RitMax               : " & clsL.Ritardomax)
            Call Scrivi("Freq                 : " & clsL.Frequenza)
            Call Scrivi("IncrRitMax           : " & clsl.IncrRitMax)
            Call Scrivi("IncrRitMaxSto        : " & clsL.IncrRitMaxSto)
            Call Scrivi("aArrayIncrRitMax     : " & clsL.StrIncrementi)
            Scrivi
            Call clsL.DisegnaGraficoIncrRitMax
        Next
    Else
        Scrivi "Nessuna lunghetta rispetta le condizioni "
        Scrivi "Lunghette esaminate " & nTotLunghette
    End If
End Sub
Function GetidFiltro
    Dim aFiltro
    aFiltro = Array("IncrRitMaxSto=mIncrRitMaxCr","IncrRitMaxSto<=mIncrRitMaxCr","IncrRitMaxSto>=mIncrRitMaxCr")
    GetidFiltro = ScegliOpzioneMenu(aFiltro,0,"Select Filtro Condizione")
End Function
Function ScegliFileArchivioVirt(sDir)
    Dim i
    ReDim aFile(0)
    Call ElencoFileInDirectory(sDir,aFile,".dat")
    If UBound(aFile) > 0 Then
        i = ScegliOpzioneMenu(aFile,1,"scegliArchiovirtuale")
        If i > 0 Then
            ScegliFileArchivioVirt = aFile(i)
        Else
            ScegliFileArchivioVirt = ""
        End If
    Else
        MsgBox "Non sono stati trovati i sistemi virtuali nella directory " & vbCrLf & sDir
    End If
End Function
 
i legend;n1939762 ha scritto:
Scusa tom non avevo visto il post.
Ok ma che ne dici se mettiamo un numero di default?
Fare un altro input box diventa un caOS per chi non ha dimestichezza
Fai le tue prove poi mi fai sapere
Allora nella function is condizione rispettata
Sostituisci
If aElencoRit ( ubound ( aElencoRit ) ) > 0 and aIdEstrIncrRitMax ( nUpper ) = mFine Then
Con

If aElencoRit ( ubound ( aElencoRit ) ) > 0 and aIdEstrIncrRitMax ( nUpper ) = mFine and nUpper >=6 then
Se vuoi di più cambi 6 con 10 0 quanto vuoi tu
Fammi sapere.
Buon pranzo :)


Fatto come hai detto e... funzia alla grande! GRAZIE!!! ;) :D
Ps: Per quanto riguarda la maggior praticità per i meno "abituati..." però credo che sia nettamente da preferire la versione eventuale con finestra di dialogo relativa piuttosto al cercare la riga di codice da sostituire e/o modificare come ho fatto io su tua precississima indicazione :o Ciao mito.
 
ciao Legend , questo è lo script di Di Saronno corretto per la gestione del range di analisi anche sugli archivi virtuali , va usato cone la versione 1.5.65 , in questo modo dovrebbe funzionare.

In questo script devi aggiungere le modifiche che avete fatto.

Codice:
Option Explicit
Class clsLunghetta
    Private aNumeri ' contiene i numeri della lunghetta
    Private mInizio,mFine,aRuote,mSorte ' parametri per il range analisi
    Private mClasse ' contine la classe della lunghetta
    Private aElencoRit ' conterra l'elenco dei ritardi per la lunghetta
    Private aIdEstrElencoRit ' conterra l'elenco dei ritardi per la lunghetta
    Private aElencoIncrRitMax ' contiene l'elnco degli incrementi del ritardo max
    Private aIdEstrIncrRitMax ' conterra l'elenco degli id estrazione in
    ' cui si è registrato l'incremento del ritmax conosciuto
    Private aRitardiAllIncremento ' contiene il valore del ritardo all'idestrazione in cui
    ' si è verificato l'incremento
    Private mRitardo,mRitardoMax,mIncrRitMax,mFrequenza ' valori statistici
    Private mIncrRitardoMaxSto,mStrIncRitSto
    Public Property Get IncrRitMaxSto
        IncrRitMaxSto = mIncrRitardoMaxSto
    End Property
    Public Property Get strIncRitMaxSto
        strIncRitMaxSto = mStrIncRitSto
    End Property
    Public Property Get Ritardo
        Ritardo = mRitardo
    End Property
    Public Property Get RitardoMax
        RitardoMax = mRitardoMax
    End Property
    Public Property Get IncrRitMax
        IncrRitMax = mIncrRitMax
    End Property
    Public Property Get Frequenza
        Frequenza = mFrequenza
    End Property
    Public Property Get LunghettaString
        LunghettaString = StringaNumeri(aNumeri)
    End Property
    ' inizializza le proprietà dell'oggetto
    Sub Init(sLunghetta,sChrSep,RangeInizio,RangeFine,vetRuote,SorteInGioco)
        ' acquisisco i parametri per l'analisi
        mInizio = RangeInizio
        mFine = RangeFine
        aRuote = vetRuote
        mSorte = SorteInGioco
        ' alimento il vettore con i numeri della lunghetta
        Call AlimentaVettoreLunghetta(sLunghetta,sChrSep)
        ' calcolo l'elenco dei ritardi
        Call ElencoRitardiTurbo(aNumeri,aRuote,mSorte,mInizio,mFine,aElencoRit,aIdEstrElencoRit)
        ' alimento il vettore che contien l'elenco degli incrementi rit max
        Call AlimentaVettoreIncrRitMax
    End Sub
    ' esegue il calcolo dei valori statistici della lunghetta
    Sub EseguiStatistica
        Call StatisticaFormazioneTurbo(aNumeri,aRuote,mSorte,mRitardo,mRitardoMax,mIncrRitMax,mFrequenza,mInizio,mFine)
    End Sub
    Private Sub AlimentaVettoreLunghetta(sLunghetta,sChrSep)
        Dim k
        If IsArray(sLunghetta) Then
            ' se la lunghetta è gia un array lo copio nel vettore locale dei numeri
            ReDim aNumeri(UBound(sLunghetta))
            For k = 1 To UBound(sLunghetta)
                aNumeri(k) = sLunghetta(k)
            Next
        Else
            ' antepongo un carattere separatore per fare in modo che
            ' aNumeri si valorizzi dall'indice 1 (senno si sarebeb valorizzato dall'indice 0)
            Call SplitByChar((sChrSep & sLunghetta),sChrSep,aNumeri)
        End If
        ' valorizzo la classe della lunghetta
        mClasse = UBound(aNumeri)
    End Sub
    Private Sub AlimentaVettoreIncrRitMax
        Dim nRitMax,nIncr,nId,k
        nId = 0
        ' inizializzo il vettore a 0 elementi
        ReDim aElencoIncrRitMax(0)
        ReDim aIdEstrIncrRitMax(0)
        ReDim aRitardiAllIncremento(0)
        ' ciclo sul vettore dei ritardi
        For k = 1 To UBound(aElencoRit)
            ' se il ritardo corrente supera il ritmax attuale..
            If aElencoRit(k) > nRitMax Then
                If nRitMax > 0 Then
                    ' se il ritmax attuale è >0 (ivvero ne esiste uno)
                    ' calcolo di quanto si è incrementato
                    nIncr = aElencoRit(k) - nRitMax
                    ' incremento il contatore dei valori trovati
                    nId = nId + 1
                    ' ridimensiono il vettore mantenendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aElencoIncrRitMax(nId)
                    ' memorizzo il valore
                    aElencoIncrRitMax(nId) = nIncr
                    ' ridimensiono il vettore mantnendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aIdEstrIncrRitMax(nId)
                    ' memorizzo l'id dell'estrazione dove si è avuto l'incremento
                    aIdEstrIncrRitMax(nId) = aIdEstrElencoRit(k)
                    ' ridimensiono il vettore mantnendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aRitardiAllIncremento(nId)
                    ' memorizzo il valore del ritardo all'id dell'estrazione dove si è avuto l'incremento
                    aRitardiAllIncremento(nId) = aElencoRit(k)
                End If
                nRitMax = aElencoRit(k)
            End If
        Next
        mStrIncRitSto = StringaNumeri(aElencoIncrRitMax,,True)
    End Sub
    Function IsCondizioneRispettata
        ' verifica che l'incremento dell'ultimo ritmax sia uguale al massimo incr rit max conosciuto.
        Dim nUpper
        nUpper = UBound(aElencoIncrRitMax)
        mIncrRitardoMaxSto = MassimoV(aElencoIncrRitMax,1,nUpper - 1)
        If aElencoRit(UBound(aElencoRit)) > 0 And aIdEstrIncrRitMax(nUpper) = mFine Then
            IsCondizioneRispettata =(aElencoIncrRitMax(nUpper) >= mIncrRitardoMaxSto)
        Else
            IsCondizioneRispettata = False
        End If
    End Function
    Sub DisegnaGraficoIncrRitMax
        Dim x,y,k
        Dim nValoreMaxX,nValoreMaxY,nValoreMinX
        Dim nStepX,nStepY
        Dim nUpperVetIncrRit
        nValoreMinX = MinimoV(aIdEstrIncrRitMax,1)
        nValoreMaxX = aIdEstrIncrRitMax(UBound(aIdEstrIncrRitMax))
        nValoreMaxY = MassimoV(aElencoRit,1)
        nStepX =(nValoreMaxX -(mInizio - 1)) \10
        nStepY = nValoreMaxY \10
        Call PreparaGrafico("Formaziione " & StringaNumeri(aNumeri),nValoreMinX,nValoreMaxX,0,nValoreMaxY,nStepX,nStepY)
        nUpperVetIncrRit = UBound(aElencoIncrRitMax)
        ' linea dell'incremento rit max
        ReDim aV(nUpperVetIncrRit - 1,2)
        For k = 1 To nUpperVetIncrRit
            x = aIdEstrIncrRitMax(k)
            y = aElencoIncrRitMax(k)
            aV(k - 1,1) = x
            aV(k - 1,2) = y
        Next
        Call DisegnaLineaGrafico(aV,vbRed,"IncrRitMax")
        ' linea dell' rit max
        ReDim aV(nUpperVetIncrRit - 1,2)
        For k = 1 To nUpperVetIncrRit
            x = aIdEstrIncrRitMax(k)
            y = aRitardiAllIncremento(k)
            aV(k - 1,1) = x
            aV(k - 1,2) = y
        Next
        Call DisegnaLineaGrafico(aV,vbBlue,"RitMax")
        ' scrive grafico nell'output
        Call InserisciGrafico
    End Sub
End Class
Sub Main
    Dim sDir,Inizio,Fine,sFile,sFileCompleto,aRuote,Sorte
    Dim bOk
    sDir = GetDirectoryAppData & "ArchiviVirtuali\"
    sFile = ScegliFileArchivioVirt(sDir)
    If sFile <> "" Then
        sFileCompleto = sDir & sFile & ".dat"
        bOk = ApriFileBaseDati(sFileCompleto)
    Else
        bOk = True ' archivio normale
    End If
    
    If bOk Then
        If ScegliRange(Inizio,Fine) Then
            Sorte = ScegliEsito
            Call ScegliRuote(aRuote,Nothing)
            If(Fine > Inizio) And UBound(aRuote) > 0 And Sorte > 0 Then
                Call Scrivi("Archivio : " & Iif(sFile <> "",sFile,"Archivio lotto"))
                Select Case ScegliTipoSviluppo
                Case 1
                    Call AnalisiLunghetteFromFileTxt(Inizio,Fine,aRuote,Sorte)
                Case 2
                    Call AnalisiLunghetteFromNumeriCasuali(Inizio,Fine,aRuote,Sorte)
                Case 3
                    Call AnalisiLunghetteFromSceglinumeri(Inizio,Fine,aRuote,Sorte)
                End Select
            End If
        End If
    End If
End Sub
Function ScegliFileArchivioVirt(sDir)
    Dim i
    ReDim aFile(0)
    Call ElencoFileInDirectory(sDir,aFile,".dat")
    
    aFile(0) = "Archivio reale"
    i = ScegliOpzioneMenu(aFile,1,"Scegli archivio virtuale")
    If i > 0 Then
        ScegliFileArchivioVirt = aFile(i)
    Else
        ScegliFileArchivioVirt = ""
    End If
        
End Function
Function ScegliTipoSviluppo
    ReDim aVoci(3)
    aVoci(1) = "Da file txt con lunghette"
    aVoci(2) = "Da sviluppo casuale"
    aVoci(3) = "Da sviluppo tabellare"
    ScegliTipoSviluppo = ScegliOpzioneMenu(aVoci,1)
End Function
Function GetChrSepFromRiga(sRiga)
    Dim k,schr
    schr = ""
    For k = 1 To Len(sRiga)
        schr = Mid(sRiga,k,1)
        If IsNumeric(schr) = False Then
            Exit For
        End If
    Next
    GetChrSepFromRiga = schr
End Function
Sub AnalisiLunghetteFromFileTxt(Inizio,Fine,aRuote,Sorte)
    Dim sFile,aLunghette,nTotLunghette
    Dim k,sChrSep
    Dim clsL,collLunghette
    Set collLunghette = GetNewCollection
    sFile = ScegliFile(GetDirectoryAppData,".txt")
    If FileEsistente(sFile) Then
        Call LeggiRigheFileDiTesto(sFile,aLunghette)
        nTotLunghette = UBound(aLunghette)
        If nTotLunghette > 0 Then
            sChrSep = GetChrSepFromRiga(aLunghette(1))
            For k = 0 To nTotLunghette
                Set clsL = New clsLunghetta
                Call clsL.Init(aLunghette(k),sChrSep,Inizio,Fine,aRuote,Sorte)
                If clsL.IsCondizioneRispettata Then
                    Call clsL.EseguiStatistica
                    collLunghette.Add clsL
                End If
                If k Mod 50 = 0 Then
                    Call Messaggio("Righe esaminate : " & k)
                    Call AvanzamentoElab(1,nTotLunghette,k)
                    If ScriptInterrotto Then Exit For
                End If
            Next
            'prova report solo per casi con incmaxsto = incmax
            'If (clsL.IncrRitMax = clsL.IncrRitMaxSto) Then
            ' Call Scrivi(" IncrRitMaxSto : " & clsL.IncrRitMaxSto)
            Scrivi "Range analisi : " & GetInfoEstrazione(Inizio) & "-" & GetInfoEstrazione(Fine)
            Scrivi "Lunghette esaminate : " & nTotLunghette + 1 & " Valide : " & collLunghette.count
            Scrivi "Sorte : " & NomeSorte(Sorte)
            Scrivi "Ruote : " & StringaRuote(aRuote)
            Scrivi
            Call Scrivi
            If collLunghette.count > 0 Then
                Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
                For Each clsL In collLunghette
                    If(clsL.IncrRitMax - clsL.IncrRitMaxSto = 0) Then
                        Call Scrivi("Lunghetta : " & clsL.LunghettaString)
                        Call Scrivi("Ritardo : " & clsL.Ritardo)
                        Call Scrivi("RitMax : " & clsL.RitardoMax)
                        Call Scrivi("Freq : " & clsL.Frequenza)
                        Call Scrivi("IncrRitMx : " & clsL.IncrRitMax)
                        Call Scrivi(" IncrRitMaxSto : " & clsL.IncrRitMaxSto)
                        Call Scrivi(" s incrementi : " & clsL.strIncRitMaxSto)
                        Call clsL.DisegnaGraficoIncrRitMax
                    End If
                Next
            Else
                Scrivi "Nessuna lunghetta rispetta le condizioni"
                Scrivi "Lunghette esaminate " & nTotLunghette + 1
            End If
        End If
    End If
    'End If
    'fine prova selezione report solo per i casi voluti...
End Sub
Sub AnalisiLunghetteFromNumeriCasuali(Inizio,Fine,aRuote,Sorte)
    Dim sFile,aLunghette,nTotLunghette,nClasse
    Dim nTrov,nProdotte
    Dim clsL,collLunghette
    Set collLunghette = GetNewCollection
    nTotLunghette = Int(InputBox("Quante lunghette devono essere trovate ?",,10))
    nClasse = Int(InputBox("Quanti numeri nella lunghetta",,Sorte))
    If nTotLunghette > 0 And nClasse >= Sorte And nClasse <= 10 Then
        nTrov = 0
        nProdotte = 0
        Do While nTrov < nTotLunghette
            Set clsL = New clsLunghetta
            ReDim aNum(nClasse)
            Call GetColonnaCasuale(nClasse,aNum)
            nProdotte = nProdotte + 1
            Call clsL.Init(aNum,"",Inizio,Fine,aRuote,Sorte)
            If clsL.IsCondizioneRispettata Then
                Call clsL.EseguiStatistica
                collLunghette.Add clsL
                nTrov = nTrov + 1
            End If
            If nProdotte Mod 50 = 0 Then
                Call Messaggio("combinazioni esaminate " & nProdotte & " valide " & nTrov)
                Call DoEventsEx
                If ScriptInterrotto Then Exit Do
            End If
        Loop
        Scrivi "Range analisi       : " & GetInfoEstrazione(Inizio) & " - " & GetInfoEstrazione(Fine)
        Scrivi "Lunghette esaminate : " & nTotLunghette & " Valide : " & collLunghette.count
        Scrivi "Sorte               : " & NomeSorte(Sorte)
        Scrivi "Ruote               : " & StringaRuote(aRuote)
        Scrivi
        Scrivi "Lunghette ordinate per incremento ritardo max",True,,vbYellow
        Call Scrivi
        If collLunghette.count > 0 Then
            Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
            For Each clsL In collLunghette
                Call Scrivi("Lunghetta : " & clsL.LunghettaString)
                Call Scrivi("Ritardo   : " & clsL.Ritardo)
                Call Scrivi("RitMax    : " & clsL.RitardoMax)
                Call Scrivi("Freq      : " & clsL.Frequenza)
                Call Scrivi("IncrRitMx : " & clsL.IncrRitMax)
                Call clsL.DisegnaGraficoIncrRitMax
            Next
        Else
            Scrivi "Nessuna lunghetta rispetta le condizioni"
            Scrivi "Lunghette esaminate " & nTotLunghette
        End If
    End If
End Sub
Sub AnalisiLunghetteFromSceglinumeri(Inizio,Fine,aRuote,Sorte)
    Dim nTotLunghette
    Dim k,sChrSep,nClasse
    ReDim aLunghette(0)
    Dim clsL,collLunghette
    Set collLunghette = GetNewCollection
    sChrSep = " "
    ScegliNumeri(aLunghette)
    nClasse = CInt(InputBox(" classe sviluppo ",,2))
    nTotLunghette = InitSviluppoIntegrale(aLunghette,nClasse)
    k = 0
    Do While GetCombSviluppo(aLunghette)
        k = k + 1
        Set clsL = New clsLunghetta
        Call clsL.Init(aLunghette,sChrSep,Inizio,Fine,aRuote,Sorte)
        If clsL.IsCondizioneRispettata Then
            Call clsL.EseguiStatistica
            collLunghette.Add clsL
        End If
        If k Mod 50 = 0 Then
            Call Messaggio("Righe esaminate " & k & "  valide " & collLunghette. count)
            DoEventsEx
            Call AvanzamentoElab(1,nTotLunghette,k)
            If ScriptInterrotto Then Exit Do
        End If
    Loop
    Scrivi "Range analisi       : " & GetInfoEstrazione(Inizio) & " - " & GetInfoEstrazione(Fine)
    Scrivi "Lunghette esaminate : " & nTotLunghette & " Valide : " & collLunghette.count
    Scrivi "Sorte               : " & NomeSorte(Sorte)
    Scrivi "Ruote               : " & StringaRuote(aRuote)
    Scrivi
    Scrivi "Lunghette ordinate per incremento ritardo max",True,,vbYellow
    Call Scrivi
    If collLunghette.count > 0 Then
        Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
        For Each clsL In collLunghette
            If(clsL.IncrRitMax - clsL.IncrRitMaxSto = 0) Then
                Call Scrivi("Ritardo   : " & clsL.Ritardo)
                Call Scrivi("RitMax    : " & clsL.RitardoMax)
                Call Scrivi("Freq      : " & clsL.Frequenza)
                Call Scrivi("IncrRitMx : " & clsL.IncrRitMax)
                Call Scrivi(" IncrRitMaxSto : " & clsL.IncrRitMaxSto)
                Call Scrivi(" s incrementi : " & clsL.strIncRitMaxSto)
                Call clsL.DisegnaGraficoIncrRitMax
            End If
        Next
    Else
        Scrivi "Nessuna lunghetta rispetta le condizioni"
        Scrivi "Lunghette esaminate " & nTotLunghette
    End If
    'End If
    'End If
End Sub
 
Codice:
Option Explicit
Class clsLunghetta
    Private aNumeri ' contiene i numeri della lunghetta
    Private mInizio,mFine,aRuote,mSorte ' parametri per il range analisi
    Private mClasse ' contine la classe della lunghetta
    Private aElencoRit ' conterra l'elenco dei ritardi per la lunghetta
    Private aIdEstrElencoRit ' conterra l'elenco dei ritardi per la lunghetta
    Private aElencoIncrRitMax ' contiene l'elnco degli incrementi del ritardo max
    Private aIdEstrIncrRitMax ' conterra l'elenco degli id estrazione in
    ' cui si è registrato l'incremento del ritmax conosciuto
    Private aRitardiAllIncremento ' contiene il valore del ritardo all'idestrazione in cui
    ' si è verificato l'incremento
    Private mRitardo,mRitardoMax,mIncrRitMax,mFrequenza ' valori statistici
    Private mIncrRitardoMaxSto,mStrIncRitSto
    Private mFiltro
    Public Property Get IncrRitMaxSto
        IncrRitMaxSto = mIncrRitardoMaxSto
    End Property
    Public Property Get strIncRitMaxSto
        strIncRitMaxSto = mStrIncRitSto
    End Property
    Public Property Get Ritardo
        Ritardo = mRitardo
    End Property
    Public Property Get RitardoMax
        RitardoMax = mRitardoMax
    End Property
    Public Property Get IncrRitMax
        IncrRitMax = mIncrRitMax
    End Property
    Public Property Get Frequenza
        Frequenza = mFrequenza
    End Property
    Public Property Get LunghettaString
        LunghettaString = StringaNumeri(aNumeri)
    End Property
    ' inizializza le proprietà dell'oggetto
    Sub Init(sLunghetta,sChrSep,RangeInizio,RangeFine,vetRuote,SorteInGioco,iFiltro)
        ' acquisisco i parametri per l'analisi
        mInizio = RangeInizio
        mFine = RangeFine
        aRuote = vetRuote
        mSorte = SorteInGioco
        mFiltro = iFiltro
        ' alimento il vettore con i numeri della lunghetta
        Call AlimentaVettoreLunghetta(sLunghetta,sChrSep)
        ' calcolo l'elenco dei ritardi
        Call ElencoRitardiTurbo(aNumeri,aRuote,mSorte,mInizio,mFine,aElencoRit,aIdEstrElencoRit)
        ' alimento il vettore che contien l'elenco degli incrementi rit max
        Call AlimentaVettoreIncrRitMax
    End Sub
    ' esegue il calcolo dei valori statistici della lunghetta
    Sub EseguiStatistica
        Call StatisticaFormazioneTurbo(aNumeri,aRuote,mSorte,mRitardo,mRitardoMax,mIncrRitMax,mFrequenza,mInizio,mFine)
    End Sub
    Private Sub AlimentaVettoreLunghetta(sLunghetta,sChrSep)
        Dim k
        If IsArray(sLunghetta) Then
            ' se la lunghetta è gia un array lo copio nel vettore locale dei numeri
            ReDim aNumeri(UBound(sLunghetta))
            For k = 1 To UBound(sLunghetta)
                aNumeri(k) = sLunghetta(k)
            Next
        Else
            ' antepongo un carattere separatore per fare in modo che
            ' aNumeri si valorizzi dall'indice 1 (senno si sarebeb valorizzato dall'indice 0)
            Call SplitByChar((sChrSep & sLunghetta),sChrSep,aNumeri)
        End If
        ' valorizzo la classe della lunghetta
        mClasse = UBound(aNumeri)
    End Sub
    Private Sub AlimentaVettoreIncrRitMax
        Dim nRitMax,nIncr,nId,k
        nId = 0
        ' inizializzo il vettore a 0 elementi
        ReDim aElencoIncrRitMax(0)
        ReDim aIdEstrIncrRitMax(0)
        ReDim aRitardiAllIncremento(0)
        ' ciclo sul vettore dei ritardi
        For k = 1 To UBound(aElencoRit)
            ' se il ritardo corrente supera il ritmax attuale..
            If aElencoRit(k) > nRitMax Then
                If nRitMax > 0 Then
                    ' se il ritmax attuale è >0 (ivvero ne esiste uno)
                    ' calcolo di quanto si è incrementato
                    nIncr = aElencoRit(k) - nRitMax
                    ' incremento il contatore dei valori trovati
                    nId = nId + 1
                    ' ridimensiono il vettore mantenendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aElencoIncrRitMax(nId)
                    ' memorizzo il valore
                    aElencoIncrRitMax(nId) = nIncr
                    ' ridimensiono il vettore mantnendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aIdEstrIncrRitMax(nId)
                    ' memorizzo l'id dell'estrazione dove si è avuto l'incremento
                    aIdEstrIncrRitMax(nId) = aIdEstrElencoRit(k)
                    ' ridimensiono il vettore mantnendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aRitardiAllIncremento(nId)
                    ' memorizzo il valore del ritardo all'id dell'estrazione dove si è avuto l'incremento
                    aRitardiAllIncremento(nId) = aElencoRit(k)
                End If
                nRitMax = aElencoRit(k)
            End If
        Next
        mStrIncRitSto = StringaNumeri(aElencoIncrRitMax,,True)
    End Sub
    Function IsCondizioneRispettata
        Dim nUpper,Ris
        nUpper = UBound(aElencoIncrRitMax)
        
        mIncrRitardoMaxSto = MassimoV(aElencoIncrRitMax,0,nUpper - 1)
        ' condizioni di filtro:
        '1)Ultimo ritardo >0
        '2)IncrRitMax e nell ultima estrazione esaminata
        '3) Vengono considerate solo le formazioni che hanno avuto almeno sei incrementi del rit max sto
        If aElencoRit(UBound(aElencoRit)) > 0 And aIdEstrIncrRitMax(nUpper) = mFine And nUpper >= 6 Then
            Select Case mFiltro
            Case 0
                ' incremento massimo storico è uguale all incremento Massimo corrente
                Ris =(mIncrRitardoMaxSto = aElencoIncrRitMax(nUpper))
            Case 1
                Ris =(mIncrRitardoMaxSto <= aElencoIncrRitMax(nUpper))
            Case 2
                Ris =(mIncrRitardoMaxSto >= aElencoIncrRitMax(nUpper))
            End Select
            IsCondizioneRispettata = Ris'
        Else
            IsCondizioneRispettata = False
        End If
    End Function
    Sub DisegnaGraficoIncrRitMax
        Dim x,y,k
        Dim nValoreMaxX,nValoreMaxY,nValoreMinX
        Dim nStepX,nStepY
        Dim nUpperVetIncrRit
        nValoreMinX = MinimoV(aIdEstrIncrRitMax,1)
        nValoreMaxX = aIdEstrIncrRitMax(UBound(aIdEstrIncrRitMax))
        nValoreMaxY = MassimoV(aElencoRit,1)
        nStepX =(nValoreMaxX -(mInizio - 1)) \10
        nStepY = nValoreMaxY \10
        Call PreparaGrafico("Formaziione " & StringaNumeri(aNumeri),nValoreMinX,nValoreMaxX,0,nValoreMaxY,nStepX,nStepY)
        nUpperVetIncrRit = UBound(aElencoIncrRitMax)
        ' linea dell'incremento rit max
        ReDim aV(nUpperVetIncrRit - 1,2)
        For k = 1 To nUpperVetIncrRit
            x = aIdEstrIncrRitMax(k)
            y = aElencoIncrRitMax(k)
            aV(k - 1,1) = x
            aV(k - 1,2) = y
        Next
        Call DisegnaLineaGrafico(aV,vbRed,"IncrRitMax")
        ' linea dell' rit max
        ReDim aV(nUpperVetIncrRit - 1,2)
        For k = 1 To nUpperVetIncrRit
            x = aIdEstrIncrRitMax(k)
            y = aRitardiAllIncremento(k)
            aV(k - 1,1) = x
            aV(k - 1,2) = y
        Next
        Call DisegnaLineaGrafico(aV,vbBlue,"RitMax")
        ' scrive grafico nell'output
        Call InserisciGrafico
    End Sub
End Class
Sub Main
    Dim sDir,Inizio,Fine,sFile,sFileCompleto,aRuote,Sorte
    Dim bOk
    sDir = GetDirectoryAppData & "ArchiviVirtuali\"
    sFile = ScegliFileArchivioVirt(sDir)
    If sFile <> "" Then
        sFileCompleto = sDir & sFile & ".dat"
        bOk = ApriFileBaseDati(sFileCompleto)
    Else
        bOk = True ' archivio normale
    End If
    If bOk Then
        If ScegliRange(Inizio,Fine) Then
            Sorte = ScegliEsito
            Call ScegliRuote(aRuote,Nothing)
            If(Fine > Inizio) And UBound(aRuote) > 0 And Sorte > 0 Then
                Call Scrivi("Archivio : " & Iif(sFile <> "",sFile,"Archivio lotto"))
                Select Case ScegliTipoSviluppo
                Case 1
                    Call AnalisiLunghetteFromFileTxt(Inizio,Fine,aRuote,Sorte)
                Case 2
                    Call AnalisiLunghetteFromNumeriCasuali(Inizio,Fine,aRuote,Sorte)
                Case 3
                    Call AnalisiLunghetteFromSceglinumeri(Inizio,Fine,aRuote,Sorte)
                End Select
            End If
        End If
    End If
End Sub
Function ScegliFileArchivioVirt(sDir)
    Dim i
    ReDim aFile(0)
    Call ElencoFileInDirectory(sDir,aFile,".dat")
    aFile(0) = "Archivio reale"
    i = ScegliOpzioneMenu(aFile,1,"Scegli archivio virtuale")
    If i > 0 Then
        ScegliFileArchivioVirt = aFile(i)
    Else
        ScegliFileArchivioVirt = ""
    End If
End Function
Function ScegliTipoSviluppo
    ReDim aVoci(3)
    aVoci(1) = "Da file txt con lunghette"
    aVoci(2) = "Da sviluppo casuale"
    aVoci(3) = "Da sviluppo tabellare"
    ScegliTipoSviluppo = ScegliOpzioneMenu(aVoci,1)
End Function
Function GetChrSepFromRiga(sRiga)
    Dim k,schr
    schr = ""
    For k = 1 To Len(sRiga)
        schr = Mid(sRiga,k,1)
        If IsNumeric(schr) = False Then
            Exit For
        End If
    Next
    GetChrSepFromRiga = schr
End Function
Sub AnalisiLunghetteFromFileTxt(Inizio,Fine,aRuote,Sorte)
    Dim sFile,aLunghette,nTotLunghette
    Dim k,sChrSep
    Dim clsL,collLunghette
    Dim Filtro
    Filtro = GetidFiltro
    Set collLunghette = GetNewCollection
    sFile = ScegliFile(GetDirectoryAppData,".txt")
    If FileEsistente(sFile) Then
        Call LeggiRigheFileDiTesto(sFile,aLunghette)
        nTotLunghette = UBound(aLunghette)
        If nTotLunghette > 0 Then
            sChrSep = GetChrSepFromRiga(aLunghette(1))
            For k = 0 To nTotLunghette
                Set clsL = New clsLunghetta
                Call clsL.Init(aLunghette(k),sChrSep,Inizio,Fine,aRuote,Sorte,Filtro)
                If clsL.IsCondizioneRispettata Then
                    Call clsL.EseguiStatistica
                    collLunghette.Add clsL
                End If
                If k Mod 50 = 0 Then
                    Call Messaggio("Righe esaminate : " & k)
                    Call AvanzamentoElab(1,nTotLunghette,k)
                    If ScriptInterrotto Then Exit For
                End If
            Next
            Scrivi "Range analisi : " & GetInfoEstrazione(Inizio) & "-" & GetInfoEstrazione(Fine)
            Scrivi "Lunghette esaminate : " & nTotLunghette + 1 & " Valide : " & collLunghette.count
            Scrivi "Sorte : " & NomeSorte(Sorte)
            Scrivi "Ruote : " & StringaRuote(aRuote)
            Scrivi
            Call Scrivi
            If collLunghette.count > 0 Then
                Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
                For Each clsL In collLunghette
                    Call Scrivi("Formazione     : " & clsL.LunghettaString)
            Call Scrivi("Ritardo        : " & clsL.Ritardo)
            Call Scrivi("RitMax         : " & clsL.RitardoMax)
            Call Scrivi("Freq           : " & clsL.Frequenza)
            Call Scrivi("IncrRitMx      : " & clsL.IncrRitMax)
            Call Scrivi(" IncrRitMaxSto : " & clsL.IncrRitMaxSto)
            Call Scrivi(" s incrementi  : " & clsL.strIncRitMaxSto)
            Call clsL.DisegnaGraficoIncrRitMax

                Next
            Else
                Scrivi "Nessuna lunghetta rispetta le condizioni"
                Scrivi "Lunghette esaminate " & nTotLunghette + 1
            End If
        End If
    End If
    'End If
    'fine prova selezione report solo per i casi voluti...
End Sub
Sub AnalisiLunghetteFromNumeriCasuali(Inizio,Fine,aRuote,Sorte)
    Dim sFile,aLunghette,nTotLunghette,nClasse
    Dim nTrov,nProdotte
    Dim clsL,collLunghette
    Dim Filtro
    Filtro = GetidFiltro
    Set collLunghette = GetNewCollection
    nTotLunghette = Int(InputBox("Quante lunghette devono essere trovate ?",,10))
    nClasse = Int(InputBox("Quanti numeri nella lunghetta",,Sorte))
    If nTotLunghette > 0 And nClasse >= Sorte And nClasse <= 10 Then
        nTrov = 0
        nProdotte = 0
        Do While nTrov < nTotLunghette
            Set clsL = New clsLunghetta
            ReDim aNum(nClasse)
            Call GetColonnaCasuale(nClasse,aNum)
            nProdotte = nProdotte + 1
            Call clsL.Init(aNum,"",Inizio,Fine,aRuote,Sorte,Filtro)
            If clsL.IsCondizioneRispettata Then
                Call clsL.EseguiStatistica
                collLunghette.Add clsL
                nTrov = nTrov + 1
            End If
            If nProdotte Mod 50 = 0 Then
                Call Messaggio("combinazioni esaminate " & nProdotte & " valide " & nTrov)
                Call DoEventsEx
                If ScriptInterrotto Then Exit Do
            End If
        Loop
        Scrivi "Range analisi       : " & GetInfoEstrazione(Inizio) & " - " & GetInfoEstrazione(Fine)
        Scrivi "Lunghette esaminate : " & nTotLunghette & " Valide : " & collLunghette.count
        Scrivi "Sorte               : " & NomeSorte(Sorte)
        Scrivi "Ruote               : " & StringaRuote(aRuote)
        Scrivi
        Scrivi "Lunghette ordinate per incremento ritardo max",True,,vbYellow
        Call Scrivi
        If collLunghette.count > 0 Then
            Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
            For Each clsL In collLunghette
                Call Scrivi("Formazione     : " & clsL.LunghettaString)
            Call Scrivi("Ritardo        : " & clsL.Ritardo)
            Call Scrivi("RitMax         : " & clsL.RitardoMax)
            Call Scrivi("Freq           : " & clsL.Frequenza)
            Call Scrivi("IncrRitMx      : " & clsL.IncrRitMax)
            Call Scrivi(" IncrRitMaxSto : " & clsL.IncrRitMaxSto)
            Call Scrivi(" s incrementi  : " & clsL.strIncRitMaxSto)
            Call clsL.DisegnaGraficoIncrRitMax

            Next
        Else
            Scrivi "Nessuna lunghetta rispetta le condizioni"
            Scrivi "Lunghette esaminate " & nTotLunghette
        End If
    End If
End Sub
Sub AnalisiLunghetteFromSceglinumeri(Inizio,Fine,aRuote,Sorte)
    Dim nTotLunghette
    Dim k,sChrSep,nClasse
    ReDim aLunghette(0)
    Dim clsL,collLunghette
    Dim Filtro
    Filtro = GetidFiltro
    Set collLunghette = GetNewCollection
    sChrSep = " "
    ScegliNumeri(aLunghette)
    nClasse = CInt(InputBox(" classe sviluppo ",,2))
    nTotLunghette = InitSviluppoIntegrale(aLunghette,nClasse)
    k = 0
    Do While GetCombSviluppo(aLunghette)
        k = k + 1
        Set clsL = New clsLunghetta
        Call clsL.Init(aLunghette,sChrSep,Inizio,Fine,aRuote,Sorte,Filtro)
        If clsL.IsCondizioneRispettata Then
            Call clsL.EseguiStatistica
            collLunghette.Add clsL
        End If
        If k Mod 50 = 0 Then
            Call Messaggio("Righe esaminate " & k & "  valide " & collLunghette. count)
            DoEventsEx
            Call AvanzamentoElab(1,nTotLunghette,k)
            If ScriptInterrotto Then Exit Do
        End If
    Loop
    Scrivi "Range analisi       : " & GetInfoEstrazione(Inizio) & " - " & GetInfoEstrazione(Fine)
    Scrivi "Lunghette esaminate : " & nTotLunghette & " Valide : " & collLunghette.count
    Scrivi "Sorte               : " & NomeSorte(Sorte)
    Scrivi "Ruote               : " & StringaRuote(aRuote)
    Scrivi
    Scrivi "Lunghette ordinate per incremento ritardo max",True,,vbYellow
    Call Scrivi
    If collLunghette.count > 0 Then
        Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
        For Each clsL In collLunghette
            Call Scrivi("Formazione     : " & clsL.LunghettaString)
            Call Scrivi("Ritardo        : " & clsL.Ritardo)
            Call Scrivi("RitMax         : " & clsL.RitardoMax)
            Call Scrivi("Freq           : " & clsL.Frequenza)
            Call Scrivi("IncrRitMx      : " & clsL.IncrRitMax)
            Call Scrivi(" IncrRitMaxSto : " & clsL.IncrRitMaxSto)
            Call Scrivi(" s incrementi  : " & clsL.strIncRitMaxSto)
            Call clsL.DisegnaGraficoIncrRitMax
        Next
    Else
        Scrivi "Nessuna lunghetta rispetta le condizioni"
        Scrivi "Lunghette esaminate " & nTotLunghette
    End If
    End Sub
Function GetidFiltro
    Dim aFiltro
    aFiltro = Array("IncrRitMaxSto=mIncrRitMaxCr","IncrRitMaxSto<=mIncrRitMaxCr","IncrRitMaxSto>=mIncrRitMaxCr")
    GetidFiltro = ScegliOpzioneMenu(aFiltro,0,"Select Filtro Condizione")
End Function
non ho l'ultima versione ho lavorato sullo script postato da luigi spero di essere intervenuto in tutti i punti,
se ci sono errori
scriveteli con descrizione
Ciao;)
 
Ultima modifica:
ciao Legend , ho visto il tuo script quindi posso darti dei consigli su quello.

Ho visto che avete inserito un filtro per scegliere le varie relazioni tra gli incrementi del ritardo max.

ho vsto anche ahime che hai messo un valore fisso dentro la classe nella routine IsCondizioneValida

mi riferisco a questa riga

Codice:
If aElencoRit(UBound(aElencoRit)) > 0 And aIdEstrIncrRitMax(nUpper) = mFine And nUpper >= 6 Then

sbagliato .. la classe deve rimanere astratta tutti i paramaetri gli vanno passati da fuori.
Sbagliato anche il modo con il quale passate il filtro (anche se funziona) , il filtro non è un
valore che serve per i calcoli non si deve memorizzare come fosse una proprieta.

tutti i parametri necessari vanno passati alla funzione IsCondizioneValida

gli va passato l'id del filtro
gli vanno passati il minimo e il massimo per quanti incrementi accettare
gli vanno passate tutte le altre cose che servono

dentr otale funzioenw in base ai parametri ricevuti si scrive il codice opportuno
per far tornare la funzione true o false.

fai queste modifiche...


ciao !

p.s.
sono contento del tuo impegno e del fatto che mi sopporti come professore :-)
 
legend se il problema per aggiornarti la versioen è che pesa troppo 60 mb posso fare solo una versione col setup senza tutti i file accessori .. che gia dovresti avere (anche se non aggiornati)
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 23 novembre 2024
    Bari
    33
    80
    86
    52
    25
    Cagliari
    67
    57
    59
    05
    80
    Firenze
    31
    32
    58
    88
    77
    Genova
    40
    39
    23
    36
    81
    Milano
    28
    58
    45
    25
    38
    Napoli
    20
    82
    23
    44
    57
    Palermo
    76
    56
    88
    62
    31
    Roma
    12
    81
    59
    74
    72
    Torino
    46
    53
    72
    45
    23
    Venezia
    04
    12
    42
    64
    20
    Nazionale
    63
    44
    78
    10
    55
    Estrazione Simbolotto
    Torino
    43
    42
    12
    39
    22

Ultimi Messaggi

Indietro
Alto