Option Explicit
' Script Da Verificare
' Eliminate i filtri di nClasse x sistemi casuali .Il P.C con un elevato numero di combinazioni
' potrebbe impallarsi, anzi lo farà sicuramente
' Inserita funzione per trasformare i numeri virtuali( forse e solo Parziale e non generale)
' Un Grande grazie a Tom Richiedente lo script
' Un Grande grazie a silop che ha ampliato la ricerca con le sue conoscenze
' Un Grandissimo grazie a Luigi per i suoi INSEGNAMENTI
' Un grande saluto da I Legend [ aiutante:)]
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 mDist,mbPrimaEstrFissa
Public Property Get iNumIncrementi
iNumIncrementi = UBound(aElencoIncrRitMax)
End Property
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(nIdFiltro,nQIncr)
' 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 And nUpper >= nQIncr Then
Select Case nIdFiltro
Case 0
IsCondizioneRispettata =(aElencoIncrRitMax(nUpper) = mIncrRitardoMaxSto)
Case 1
IsCondizioneRispettata =(aElencoIncrRitMax(nUpper) >= mIncrRitardoMaxSto)
Case 2
IsCondizioneRispettata =(aElencoIncrRitMax(nUpper) <= mIncrRitardoMaxSto)
End Select
Else
IsCondizioneRispettata = False
End If
End Function
'Scrivo la funzione Importo i Parametri ma non li dichiaro private sono solo nella funzione
Function TrasformaArrayNumVirToNumReal(iDist,bPrimaEstrFiss)
' bPrimaEstrFiss dovrebbe influenzare il conteggio di nTotEstr
' if bPrimaFissa=true then
'nTotEstr =((mFine - mInizio) + 1)Mod 90
'else
'nTotEstr =((mFine - mInizio) )Mod 90
'end if
Dim k,nTotEstr,ValVirt
Dim sNumreal
sNumreal = ""
nTotEstr =((mFine - mInizio) + 1)Mod 90
ValVirt = Fuori90(nTotEstr *iDist)
For k = 1 To UBound(aNumeri)
sNumreal = sNumreal & Format2(Fuori90(aNumeri(k) + ValVirt)) & "."
Next
sNumreal = RimuoviLastChr(sNumreal,".")
TrasformaArrayNumVirToNumReal = sNumreal
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,idFiltro,qIncr
Dim bPrimaEstrFissa,nDistanza
sDir = GetDirectoryAppData & "ArchiviVirtuali\"
sFile = ScegliFileArchivioVirt(sDir)
'preimposto a False x valutare qualsiasi sFile<>""
bPrimaEstrFissa = False
If sFile <> "" Then
sFileCompleto = sDir & sFile & ".dat"
bOk = ApriFileBaseDati(sFileCompleto)
bPrimaEstrFissa = True
nDistanza = GetValoreFraSeparatori(sFile,"(",")")
Else
bOk = True ' archivio normale
nDistanza = 0 ' archivio Reale
End If
If bOk Then
If ScegliRange(Inizio,Fine) Then
Sorte = ScegliEsito
Call ScegliRuote(aRuote,Nothing)
' decido il filtro in base al valore degli incrementi
idFiltro = GetIdFiltro
' decido di filtrare in base al numero degli incrementi
qIncr = GetQuantiIncrementi
If(Fine > Inizio) And UBound(aRuote) > 0 And Sorte > 0 And idFiltro > - 1 Then
Call Scrivi("Archivio : " & Iif(sFile <> "",sFile,"Archivio lotto"))
Select Case ScegliTipoSviluppo
Case 1
Call AnalisiLunghetteFromFileTxt(Inizio,Fine,aRuote,Sorte,idFiltro,qIncr,bPrimaEstrFissa,nDistanza)
Case 2
Call AnalisiLunghetteFromFileCol(Inizio,Fine,aRuote,Sorte,idFiltro,qIncr,bPrimaEstrFissa,nDistanza)
Case 3
Call AnalisiLunghetteFromNumeriCasuali(Inizio,Fine,aRuote,Sorte,idFiltro,qIncr,bPrimaEstrFissa,nDistanza)
Case 4
Call AnalisiLunghetteFromSceglinumeri(Inizio,Fine,aRuote,Sorte,idFiltro,qIncr,bPrimaEstrFissa,nDistanza)
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,0,"Scegli archivio virtuale")
If i > 0 Then
ScegliFileArchivioVirt = aFile(i)
Else
ScegliFileArchivioVirt = ""
End If
End Function
Function ScegliTipoSviluppo
ReDim aVoci(4)
aVoci(1) = "Da File .txt"
aVoci(2) = "Da File .Col"
aVoci(3) = "Da Selezione Casuale"
aVoci(4) = "Da Selezione Utente"
ScegliTipoSviluppo = ScegliOpzioneMenu(aVoci,1,"SelezionaSviluppo")
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
'Function GetIdFiltro
'Dim aFiltro
'aFiltro = Array("IncrRitMaxSto=UltimoIncrRitMax","IncrRitMaxSto<=UltimoIncrRitMax","IncrRitMaxSto>=UltimoIncrRitMax")
'GetIdFiltro = ScegliOpzioneMenu(aFiltro,0,"Select Filtro Condizione")
'End Function
Function GetIdFiltro
Dim aFiltro(2)
aFiltro(0) = "aElencoIncrRitMax(nUpper) = mIncrRitardoMaxSto"
aFiltro(1) = "aElencoIncrRitMax(nUpper)>= mIncrRitardoMaxSto"
aFiltro(2) = "aElencoIncrRitMax(nUpper)<= mIncrRitardoMaxSto"
GetIdFiltro = ScegliOpzioneMenu(aFiltro,0,"Select Filtro Condizione")
End Function
Function ScriviFiltro(idFiltro)
Select Case idFiltro
Case 0
ScriviFiltro =("aElencoIncrRitMax(nUpper) = mIncrRitardoMaxSto")
Case 1
ScriviFiltro =("aElencoIncrRitMax(nUpper)>= mIncrRitardoMaxSto")
Case 2
ScriviFiltro =("aElencoIncrRitMax(nUpper)<= mIncrRitardoMaxSto")
End Select
End Function
Function GetQuantiIncrementi
GetQuantiIncrementi = CInt(InputBox("qIncr>=(NumeroIncrementiRitMaxFormazione)","Filtro Quantitaà Incrementi",5))
End Function
' Questa è la nuova routine che impedisce di scrivere i doppi
' ma non mpedisce di incrementare nTrov
'Sub AddLunghetta(collLunghette,clsL)
'On Error Resume Next
'collLunghette.Add clsL ,"k"&clsL.LunghettaString
'End Sub
Function AddLunghetta(collLunghette,clsL)
On Error Resume Next
collLunghette.Add clsL,"k" & clsL.LunghettaString
If Err = 0 Then
AddLunghetta = True
Else
AddLunghetta = False
End If
Err.Clear
End Function
Function GetValoreFraSeparatori(sFile,CharSep1,CharSep2)
Dim k
Dim i,f,sVal
i = InStr(1,sFile,CharSep1) + 1
f = InStr(i,sFile,CharSep2)
GetValoreFraSeparatori = Int(Mid(sFile,i,f - i))
End Function
Sub AnalisiLunghetteFromFileTxt(Inizio,Fine,aRuote,Sorte,idFiltro,qIncr,bPrimaEstrFissa,nDistanza)
Dim sFile,aLunghette,nTotLunghette
Dim k,sChrSep,sNumReal
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(idFiltro,qIncr) 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 "Filtro Esaminato : " & ScriviFiltro(idFiltro)
Scrivi "Lunghette esaminate : " & nTotLunghette & " Valide : " & collLunghette.count
Scrivi "Sorte : " & NomeSorte(Sorte)
Scrivi "Ruote : " & StringaRuote(aRuote)
Scrivi "Numero Minimo IncrRit : " & Format2(qIncr)
Scrivi
Scrivi FormatSpace("Lunghette ordinate per incremento ritardo max",75),True,True,RGB(25,89,76),vbWhite
Call Scrivi
If collLunghette.count > 0 Then
Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
For Each clsL In collLunghette
If nDistanza = 0 Then
Call Scrivi("Numeri Formazione : " & clsL.LunghettaString)
Else
sNumReal = clsL.TrasformaArrayNumVirToNumReal(nDistanza,bPrimaEstrFissa)
Call Scrivi("Numeri Formazione : " & clsL.LunghettaString & " " & "Numeri Verifica : " & sNumReal)
End If
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("strIncrementi : " & clsL.strIncRitMaxSto)
Call Scrivi("Numero Incrementi : " & clsL.iNumIncrementi)
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,idFiltro,qIncr,bPrimaEstrFissa,nDistanza)
Dim sFile,aLunghette,nTotLunghette,nClasse
Dim nTrov,nProdotte,sNumReal
Dim clsL,collLunghette,uLunghette
ReDim aSelNum(0)
Set collLunghette = GetNewCollection
nTotLunghette = Int(InputBox("Quante lunghette devono essere prodotte ?",,10))
uLunghette=nTotLunghette
ScegliNumeri(aSelNum)
nClasse = Int(InputBox("Quanti numeri nella lunghetta","Sorte analizzata" & NomeSorte(Sorte),2))
If nTotLunghette > 0 And nClasse >= Sorte Then
nTrov = 0
nProdotte = 0
Do While nTotLunghette > 0
Set clsL = New clsLunghetta
ReDim aNum(nClasse)
Call GetColonnaCasuale(nClasse,aNum,aSelNum)
nProdotte = nProdotte + 1
Call clsL.Init(aNum,"",Inizio,Fine,aRuote,Sorte)
If clsL.IsCondizioneRispettata(idFiltro,qIncr) Then
Call clsL.EseguiStatistica
If AddLunghetta(collLunghette,clsL) Then nTrov = nTrov + 1
End If
If nProdotte Mod 50 = 0 Then
Call Messaggio("combinazioni esaminate " & nProdotte & " valide " & nTrov)
Call AvanzamentoElab(1,uLunghette,nProdotte)
Call DoEventsEx
If ScriptInterrotto Then Exit Do
End If
nTotLunghette = nTotLunghette - 1
Loop
Scrivi "Range analisi : " & GetInfoEstrazione(Inizio) & " - " & GetInfoEstrazione(Fine)
Scrivi "Filtro Esaminato : " & ScriviFiltro(idFiltro)
Scrivi "Lunghette esaminate : " & nProdotte & " Valide : " & collLunghette.count
Scrivi "Sorte : " & NomeSorte(Sorte)
Scrivi "Ruote : " & StringaRuote(aRuote)
Scrivi "Numero Minimo IncrRit : " & Format2(qIncr)
Scrivi
Scrivi FormatSpace("Lunghette ordinate per incremento ritardo max",75),True,True,RGB(25,89,76),vbWhite
Call Scrivi
If collLunghette.count > 0 Then
Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
For Each clsL In collLunghette
If nDistanza = 0 Then
Call Scrivi("Numeri Formazione : " & clsL.LunghettaString)
Else
sNumReal = clsL.TrasformaArrayNumVirToNumReal(nDistanza,bPrimaEstrFissa)
Call Scrivi("Numeri Formazione : " & clsL.LunghettaString & " " & "Numeri Verifica : " & sNumReal)
End If
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("strIncrementi : " & clsL.strIncRitMaxSto)
Call Scrivi("Numero Incrementi : " & clsL.iNumIncrementi)
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,idFiltro,qIncr,bPrimaEstrFissa,nDistanza)
Dim nTotLunghette
Dim k,sChrSep,nClasse,sNumReal
ReDim aLunghette(0)
Dim clsL,collLunghette,FiltroEsaminato
Set collLunghette = GetNewCollection
FiltroEsaminato = ScriviFiltro(idFiltro)
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(idFiltro,qIncr) 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 "Filtro Esaminato : " & FiltroEsaminato
Scrivi "Lunghette esaminate : " & nTotLunghette & " Valide : " & collLunghette.count
Scrivi "Sorte : " & NomeSorte(Sorte)
Scrivi "Ruote : " & StringaRuote(aRuote)
Scrivi "Numero Minimo IncrRit : " & Format2(qIncr)
Scrivi
Scrivi FormatSpace("Lunghette ordinate per incremento ritardo max",75),True,True,RGB(25,89,76),vbWhite
Call Scrivi
If collLunghette.count > 0 Then
Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
For Each clsL In collLunghette
If nDistanza = 0 Then
Call Scrivi("Numeri Formazione : " & clsL.LunghettaString)
Else
sNumReal = clsL.TrasformaArrayNumVirToNumReal(nDistanza,bPrimaEstrFissa)
Call Scrivi("Numeri Formazione : " & clsL.LunghettaString & " " & "Numeri Verifica : " & sNumReal)
End If
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("strIncrementi : " & clsL.strIncRitMaxSto)
Call Scrivi("Numero Incrementi : " & clsL.iNumIncrementi)
Call clsL.DisegnaGraficoIncrRitMax
Next
Else
Scrivi "Nessuna lunghetta rispetta le condizioni"
Scrivi "Lunghette esaminate " & nTotLunghette
End If
End Sub
Sub AnalisiLunghetteFromFileCol(Inizio,Fine,aRuote,Sorte,idFiltro,qIncr,bPrimaEstrFissa,nDistanza)
Dim sFile,nTotLunghette
Dim k,sChrSep,sNumReal
Dim clsL,collLunghette
sChrSep = " "
Set collLunghette = GetNewCollection
sFile = ScegliFile(GetDirectoryAppData & "SviluppiColonne",".col")
If FileEsistente(sFile) Then
ReDim alunghette(0)
Call LeggiColonnaSistema(alunghette,1,sFile,,nTotLunghette)
If nTotLunghette > 0 Then
For k = 1 To nTotLunghette
ReDim alunghette(0)
Call LeggiColonnaSistema(alunghette,k,sFile)
Set clsL = New clsLunghetta
Call clsL.Init(alunghette,sChrSep,Inizio,Fine,aRuote,Sorte)
If clsL.IsCondizioneRispettata(idFiltro,qIncr) Then
Call clsL.EseguiStatistica
collLunghette.Add clsL
End If
If k Mod 50 = 0 Then
Call Messaggio("Colonne esaminate : " & k & " Valide : " & collLunghette.count)
Call AvanzamentoElab(1,nTotLunghette,k)
If ScriptInterrotto Then Exit For
End If
Next
Scrivi "Range analisi : " & GetInfoEstrazione(Inizio) & " - " & GetInfoEstrazione(Fine)
Scrivi "Filtro Esaminato : " & ScriviFiltro(idFiltro)
Scrivi "Lunghette esaminate : " & nTotLunghette & " Valide : " & collLunghette.count
Scrivi "Sorte : " & NomeSorte(Sorte)
Scrivi "Ruote : " & StringaRuote(aRuote)
Scrivi "Numero Minimo IncrRit : " & Format2(qIncr)
Scrivi
Scrivi FormatSpace("Lunghette ordinate per incremento ritardo max",75),True,True,RGB(25,89,76),vbWhite
Call Scrivi
If collLunghette.count > 0 Then
Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
For Each clsL In collLunghette
If nDistanza = 0 Then
Call Scrivi("Numeri Formazione : " & clsL.LunghettaString)
Else
sNumReal = clsL.TrasformaArrayNumVirToNumReal(nDistanza,bPrimaEstrFissa)
Call Scrivi("Numeri Formazione : " & clsL.LunghettaString & " => " & "Numeri Verifica : " & sNumReal)
End If
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("strIncrementi : " & clsL.strIncRitMaxSto)
Call Scrivi("Numero Incrementi : " & clsL.iNumIncrementi)
Call clsL.DisegnaGraficoIncrRitMax
Next
Else
Scrivi "Nessuna lunghetta rispetta le condizioni"
Scrivi "Lunghette esaminate " & nTotLunghette + 1
End If
End If
End If
End Sub