Novità

CORREZIONE SCRIPT

bauman

Member
Buongiorno a tutto il forum,
non rieso a correggere questo script che ho cercato di creare con l'AI del pc e mi da errori su alcune variabili e/o funzioni che non fanno parte di spaziometria pur ammettendo che ci sono, quindi non so come correggere, ecco il listato
Codice:
Sub Main()
    ' Dichiarazione esplicita di tutte le variabili (Standard VBScript per Spaziometria)
    Dim Nu(3), Ru(1), Poste(3)
    Dim Inizio, Fine, Ruota, Colpi
    Dim K, RetEsito, RetColpi, RetEstratti, RetId
    Dim i, j, TempNum, TempFreq
    Dim ContatoreVincite, ContatoreEsiti
    Dim MatriceFrequenze(90, 2)
    Dim DblPercentuale
    Dim StrPercentualeFormattata
    
    ' Variabili per il calcolo dell'intervallo medio e massimo
    Dim UltimoConcorsoPositivo, SommaIntervalli, Distanza, IntervalloMedio
    Dim IntervalloMassimo, StrIntervalloMedioFormattato
    
    ' Variabili per il filtro dei mesi richiesto
    Dim StringaMesi, IntMesi, QuanteEstrazioni
    
    ' Vettori per la gestione nativa delle intestazioni della tabella
    Dim aTitoli(7), aAllineamento(7)

    ' --- SCELTA DELLA RUOTA INTERATTIVA DA INTERFACCIA ---
    Ruota = ScegliRuota
    
    ' Se l'utente preme annulla o chiude la finestra (valore minore o uguale a 0 o non valido)
    If Ruota <= 0 Or Ruota > 12 Then
        Ruota = BA_ ' Imposta Bari come ruota di default/riserva
    End If

    ' --- FILTRO INTERATTIVO PER IL PERIODO IN MESI ---
    StringaMesi = InputBox("Quanti mesi a ritroso vuoi analizzare?", "IMPOSTA PERIODO DI ANALISI", "6")
    
    ' Valutazione e conversione del valore inserito dall'utente
    If IsNumeric(StringaMesi) Then
        IntMesi = CInt(StringaMesi)
        If IntMesi <= 0 Then IntMesi = 6 ' Valore di sicurezza se inserito 0 o negativi
    Else
        IntMesi = 6 ' Valore di riserva se l'utente non inserisce un numero o annulla
    End If
    
    ' Nel gioco del Lotto ci sono circa 13-14 estrazioni al mese
    QuanteEstrazioni = IntMesi * 13.5
    QuanteEstrazioni = Int(QuanteEstrazioni)

    Colpi = 3 ' Finestra temporale di verifica richiesta (3 estrazioni)
    
    ' Definizione delle poste per la verifica statistica
    Poste(2) = 1 ' Verifica Ambo
    Poste(3) = 1 ' Verifica Terno
    Ru(1) = Ruota

    ' Impostazione dell'intervallo temporale d'archivio basato sul filtro scelto
    Fine = EstrazioneFin
    Inizio = Fine - QuanteEstrazioni
    
    ' Controllo di sicurezza per evitare di andare oltre l'inizio dell'archivio storico
    If Inizio < 1 Then Inizio = 1
    
    Call Scrivi("==========================================================================", True)
    Call Scrivi(" SCRIPT SPAZIOMETRIA - REPORT AVANZATO CON TABELLA RIASSUNTIVA", True)
    Call Scrivi("==========================================================================", True)
    Call Scrivi("Ruota scelta per l'analisi: " & NomeRuota(Ruota), True)
    Call Scrivi("Mesi impostati a ritroso: " & IntMesi & " (" & QuanteEstrazioni & " estrazioni storiche)", True)
    Call Scrivi("Periodo dal: " & DataEstrazione(Inizio) & " al " & DataEstrazione(Fine))
    Call Scrivi("Colpi di verifica impostati: " & Colpi)
    Call Scrivi("--------------------------------------------------------------------------")

    ' --- ALGORITMO DI SELEZIONE DEI 3 NUMERI PIÙ FREQUENTI ---
    For i = 1 To 90
        MatriceFrequenze(i, 1) = i
        MatriceFrequenze(i, 2) = EstrattoFrequenza(Ruota, i, Inizio, Fine)
    Next
    
    ' Ordinamento per frequenza decrescente (Bubble Sort standard di Spaziometria)
    For i = 1 To 89
        For j = i + 1 To 90
            If MatriceFrequenze(i, 2) < MatriceFrequenze(j, 2) Then
                TempNum = MatriceFrequenze(i, 1)
                TempFreq = MatriceFrequenze(i, 2)
                
                MatriceFrequenze(i, 1) = MatriceFrequenze(j, 1)
                MatriceFrequenze(i, 2) = MatriceFrequenze(j, 2)
                
                MatriceFrequenze(j, 1) = TempNum
                MatriceFrequenze(j, 2) = TempFreq
            End If
        Next
    Next
    
    ' Assegnazione dei 3 numeri più caldi rilevati nell'archivio
    Nu(1) = MatriceFrequenze(1, 1)
    Nu(2) = MatriceFrequenze(2, 1)
    Nu(3) = MatriceFrequenze(3, 1)
    
    Call Scrivi("I 3 numeri più frequenti rilevati nel periodo sono: " & StringaNumeri(Nu), True)
    Call Scrivi("Frequenze rispettive: " & MatriceFrequenze(1, 2) & ", " & MatriceFrequenze(2, 2) & ", " & MatriceFrequenze(3, 2))
    Call Scrivi("--------------------------------------------------------------------------")
    Call Scrivi("ELENCO ESCLUSIVO DEGLI ESITI POSITIVI RISCONTRATI:", True)
    Call Scrivi("--------------------------------------------------------------------------")

    ContatoreVincite = 0
    ContatoreEsiti = 0
    UltimoConcorsoPositivo = 0
    SommaIntervalli = 0
    IntervalloMassimo = 0
    
    ' Ciclo di verifica retroattiva sulle estrazioni dell'archivio
    For K = Inizio To (Fine - Colpi)
        ' Funzione nativa degli archivi di Spaziometria per il controllo esiti
        If VerificaEsito(Nu, Ru, K + 1, 2, Colpi, , RetEsito, RetColpi, RetEstratti, RetId) Then
            ContatoreVincite = ContatoreVincite + 1
            
            ' Calcolo della distanza temporale tra esiti positivi successivi
            If UltimoConcorsoPositivo > 0 Then
                Distanza = K - UltimoConcorsoPositivo
                SommaIntervalli = SommaIntervalli + Distanza
                
                ' Calcolo dinamico del picco massimo di ritardo tra gli esiti
                If Distanza > IntervalloMassimo Then IntervalloMassimo = Distanza
                
                Call Scrivi("Estrazione Spia n." & K & " (" & DataEstrazione(K) & ") -> EVOLUZIONE POSITIVA: " & RetEsito & " al colpo " & RetColpi & " | Numeri: [" & RetEstratti & "] conc. " & RetId & " | Distanza dal precedente: " & Distanza & " estr.")
            Else
                Call Scrivi("Estrazione Spia n." & K & " (" & DataEstrazione(K) & ") -> EVOLUZIONE POSITIVA: " & RetEsito & " al colpo " & RetColpi & " | Numeri: [" & RetEstratti & "] conc. " & RetId & " | (Primo esito del ciclo)")
            End If
            
            ' Memorizza il concorso spia corrente come punto di partenza per il prossimo calcolo
            UltimoConcorsoPositivo = K
        End If
        ContatoreEsiti = ContatoreEsiti + 1
    Next
    
    ' --- ELABORAZIONE VARIABILI DI FORMATTAZIONE E MEDIE ---
    ' 1. Calcolo percentuale di copertura
    If ContatoreEsiti > 0 Then
        DblPercentuale = (ContatoreVincite / ContatoreEsiti) * 100
    Else
        DblPercentuale = 0
    End If
    StrPercentualeFormattata = FormattaNumero(DblPercentuale, 2)
    
    ' 2. Calcolo intervallo medio
    If ContatoreVincite > 1 Then
        IntervalloMedio = SommaIntervalli / (ContatoreVincite - 1)
        StrIntervalloMedioFormattato = FormattaNumero(IntervalloMedio, 1)
    Else
        StrIntervalloMedioFormattato = "N/D"
    End If
    
    ' --- COSTRUZIONE DELLA TABELLA CON COMANDI NATIVI SPAZIOMETRIA ---
    Call Scrivi("")
    Call Scrivi("TABELLA RIASSUNTIVA DELLE METRICHE:", True)
    Call Scrivi("")
    
    ' Definizione dei titoli delle colonne (vettore base 1)
    aTitoli(1) = "Ruota Analizzata"
    aTitoli(2) = "Terzina Rilevata"
    aTitoli(3) = "Casi Totali"
    aTitoli(4) = "Casi Vincenti"
    aTitoli(5) = "Copertura %"
    aTitoli(6) = "Attesa Media (Estr.)"
    aTitoli(7) = "Ritardo Max (Estr.)"
    
    ' Impostazione dell'allineamento (2 = Centrato)
    For i = 1 To 7
        aAllineamento(i) = 2
    Next
    
    ' Inizializzazione della tabella nativa (InitTabella sostituisce SetInizioTabella)
    Call InitTabella(aTitoli, vbYellow, , , vbBlack)
    
    ' Inserimento dei valori nella riga dati della griglia
    Call AddRigaTabella
    Call SetCelTabella(1, NomeRuota(Ruota))
    Call SetCelTabella(2, StringaNumeri(Nu))
    Call SetCelTabella(3, ContatoreEsiti)
    Call SetCelTabella(4, ContatoreVincite)
    Call SetCelTabella(5, StrPercentualeFormattata & "%")
    Call SetCelTabella(6, StrIntervalloMedioFormattato)
    Call SetCelTabella(7, IntervalloMassimo)
    
    ' Disegno finale della tabella a video
    Call CreaTabella
    
End Sub

avrei bisogno di aiuto,
chiaramente saluti
Bauman
 
ciao

L'ai mi piace ricordare
: non è uno strumento risolutivo o pensante tale da darci sempre la soluzione corretta ,
anzi
spesso è l'esatto opposto, porta esattamente in una direzione opposta,
risultato....?: ci si stanca senza alcun risultato.
L'ai o ia o come diavolo si possa chiamare
è uno strumento da dover indottrinare ed istruire affinchè sviluppi le funzioni e riduca i tempi di elaborazione .

risultato
capire e comprendere la struttura ed il perchè delle funzioni come il format o il generare semplici tabelle ,
a questo corre in aiuto il pdf delle funzioni di spaziometria che aiuta molto .
cmq sia spero sia questo cio che volevi non avendo info utili e chiare su cosa cerchi dallo script

saluti

Codice:
Sub Main()
    ' Dichiarazione esplicita di tutte le variabili
    Dim Nu(3), Ru(1), Poste(3)
    Dim Inizio, Fine, Ruota, Colpi
    Dim K, RetEsito, RetColpi, RetEstratti, RetId
    Dim i, j, TempNum, TempFreq
    Dim ContatoreVincite, ContatoreEsiti
    Dim MatriceFrequenze(90, 2)
    Dim DblPercentuale
    Dim StrPercentualeFormattata
    
    ' Variabili per il calcolo dell'intervallo medio e massimo
    Dim UltimoConcorsoPositivo, SommaIntervalli, Distanza, IntervalloMedio
    Dim IntervalloMassimo, StrIntervalloMedioFormattato
    
    ' Variabili per il filtro dei mesi richiesto
    Dim StringaMesi, IntMesi, QuanteEstrazioni
    
    ' Vettori per la gestione nativa delle intestazioni della tabella
    Dim aTitoli(7), aAllineamento(7)

    ' --- SCELTA DELLA RUOTA INTERATTIVA DA INTERFACCIA ---
    Ruota = ScegliRuota
    
    ' Se l'utente preme annulla o chiude la finestra
    If Ruota <= 0 Or Ruota > 12 Then
        Ruota = BA_ ' Imposta Bari come ruota di default
    End If

    ' --- FILTRO INTERATTIVO PER IL PERIODO IN MESI ---
    StringaMesi = InputBox("Quanti mesi a ritroso vuoi analizzare?", "IMPOSTA PERIODO DI ANALISI", "6")
    
    If IsNumeric(StringaMesi) Then
        IntMesi = CInt(StringaMesi)
        If IntMesi <= 0 Then IntMesi = 6
    Else
        IntMesi = 6
    End If
    
    QuanteEstrazioni = Int(IntMesi * 13.5)
    Colpi = 3
    
    Poste(2) = 1 ' Verifica Ambo
    Poste(3) = 1 ' Verifica Terno
    Ru(1) = Ruota

    Fine = EstrazioneFin
    Inizio = Fine - QuanteEstrazioni
    
    If Inizio < 1 Then Inizio = 1
    
    Call Scrivi("==========================================================================", True)
    Call Scrivi(" SCRIPT SPAZIOMETRIA - REPORT AVANZATO CON TABELLA RIASSUNTIVA", True)
    Call Scrivi("==========================================================================", True)
    Call Scrivi("Ruota scelta per l'analisi: " & NomeRuota(Ruota), True)
    Call Scrivi("Mesi impostati a ritroso: " & IntMesi & " (" & QuanteEstrazioni & " estrazioni storiche)", True)
    Call Scrivi("Periodo dal: " & DataEstrazione(Inizio) & " al " & DataEstrazione(Fine))
    Call Scrivi("Colpi di verifica impostati: " & Colpi)
    Call Scrivi("--------------------------------------------------------------------------")

    ' --- ALGORITMO DI SELEZIONE DEI 3 NUMERI PIÙ FREQUENTI ---
    For i = 1 To 90
        MatriceFrequenze(i, 1) = i
        MatriceFrequenze(i, 2) = EstrattoFrequenza(Ruota, i, Inizio, Fine)
    Next
    
    ' Ordinamento per frequenza decrescente (Bubble Sort)
    For i = 1 To 89
        For j = i + 1 To 90
            If MatriceFrequenze(i, 2) < MatriceFrequenze(j, 2) Then
                TempNum = MatriceFrequenze(i, 1)
                TempFreq = MatriceFrequenze(i, 2)
                
                MatriceFrequenze(i, 1) = MatriceFrequenze(j, 1)
                MatriceFrequenze(i, 2) = MatriceFrequenze(j, 2)
                
                MatriceFrequenze(j, 1) = TempNum
                MatriceFrequenze(j, 2) = TempFreq
            End If
        Next
    Next
    
    Nu(1) = MatriceFrequenze(1, 1)
    Nu(2) = MatriceFrequenze(2, 1)
    Nu(3) = MatriceFrequenze(3, 1)
    
    Call Scrivi("I 3 numeri più frequenti rilevati nel periodo sono: " & StringaNumeri(Nu), True)
    Call Scrivi("Frequenze rispettive: " & MatriceFrequenze(1, 2) & ", " & MatriceFrequenze(2, 2) & ", " & MatriceFrequenze(3, 2))
    Call Scrivi("--------------------------------------------------------------------------")
    Call Scrivi("ELENCO ESCLUSIVO DEGLI ESITI POSITIVI RISCONTRATI:", True)
    Call Scrivi("--------------------------------------------------------------------------")

    ContatoreVincite = 0
    ContatoreEsiti = 0
    UltimoConcorsoPositivo = 0
    SommaIntervalli = 0
    IntervalloMassimo = 0
    
    ' Ciclo di verifica retroattiva
    For K = Inizio To (Fine - Colpi)
        ' Nota: VerificaEsito è una funzione complessa. Assicurati che i parametri siano corretti per la tua versione.
        ' Spesso in Spaziometria si usa VerificaEsito(Numeri, Ruote, Inizio, Fine, Colpi, Posta, Esito, ColpiVincenti, Estratti, ID)
        ' Qui hai messo K+1 come inizio e Colpi come durata? Verifica la sintassi nativa.
        If VerificaEsito(Nu, Ru, K + 1, 2, Colpi, , RetEsito, RetColpi, RetEstratti, RetId) Then
            ContatoreVincite = ContatoreVincite + 1
            
            If UltimoConcorsoPositivo > 0 Then
                Distanza = K - UltimoConcorsoPositivo
                SommaIntervalli = SommaIntervalli + Distanza
                
                If Distanza > IntervalloMassimo Then IntervalloMassimo = Distanza
                
                Call Scrivi("Estrazione Spia n." & K & " (" & DataEstrazione(K) & ") -> EVOLUZIONE POSITIVA: " & RetEsito & " al colpo " & RetColpi & " | Numeri: [" & RetEstratti & "] conc. " & RetId & " | Distanza: " & Distanza & " estr.")
            Else
                Call Scrivi("Estrazione Spia n." & K & " (" & DataEstrazione(K) & ") -> EVOLUZIONE POSITIVA: " & RetEsito & " al colpo " & RetColpi & " | Numeri: [" & RetEstratti & "] conc. " & RetId & " | (Primo esito)")
            End If
            
            UltimoConcorsoPositivo = K
        End If
        ContatoreEsiti = ContatoreEsiti + 1
    Next
    
    ' --- CORREZIONE FORMATTAZIONE NUMERI ---
    ' 1. Calcolo percentuale di copertura
    If ContatoreEsiti > 0 Then
        DblPercentuale = (ContatoreVincite / ContatoreEsiti) * 100
    Else
        DblPercentuale = 0
    End If
    
    ' SOSTITUITO FormattaNumero con FormatNumber (Funzione VBScript Standard)
    ' FormatNumber(espressione, decimali, includiZeroSinistra, usaParentesiNegativi, raggruppaCifre)
    StrPercentualeFormattata = FormatNumber(DblPercentuale, 2)
    
    ' 2. Calcolo intervallo medio
    If ContatoreVincite > 1 Then
        IntervalloMedio = SommaIntervalli / (ContatoreVincite - 1)
        ' SOSTITUITO FormattaNumero con FormatNumber
        StrIntervalloMedioFormattato = FormatNumber(IntervalloMedio, 1)
    Else
        StrIntervalloMedioFormattato = "N/D"
    End If
    
        ' --- COSTRUZIONE DELLA TABELLA (CORREZIONE DEFINITIVA PER clsTableHtmLd) ---
    Call Scrivi("")
    Call Scrivi("TABELLA RIASSUNTIVA DELLE METRICHE:", True)
    Call Scrivi("")
    
    ' Definizione dei titoli delle colonne
    aTitoli(1) = "Ruota Analizzata"
    aTitoli(2) = "Terzina Rilevata"
    aTitoli(3) = "Casi Totali"
    aTitoli(4) = "Casi Vincenti"
    aTitoli(5) = "Copertura %"
    aTitoli(6) = "Attesa Media (Estr.)"
    aTitoli(7) = "Ritardo Max (Estr.)"
    
    ' Inizializzazione della tabella nativa
    Call InitTabella(aTitoli, vbYellow, , , vbBlack)
    
    ' CORREZIONE ERRORE 13 (clsTableHtmLd.AddRiga):
    ' L'oggetto HTML di Spaziometria richiede che i dati della riga siano passati come ARRAY (Vettore),
    ' non come singoli argomenti separati da virgola.
    
    ' 1. Creiamo un vettore per contenere i dati di questa singola riga
    Dim aDatiRiga(7)
    
    ' 2. Inseriamo i valori nel vettore.
    ' NOTA IMPORTANTE: Convertiamo tutto in Stringa con CStr() per evitare errori di tipo (Type Mismatch)
    ' se l'oggetto HTML si aspetta solo testo.
    aDatiRiga(1) = NomeRuota(Ruota)
    aDatiRiga(2) = StringaNumeri(Nu)
    aDatiRiga(3) = CStr(ContatoreEsiti)
    aDatiRiga(4) = CStr(ContatoreVincite)
    aDatiRiga(5) = StrPercentualeFormattata & "%"
    aDatiRiga(6) = StrIntervalloMedioFormattato
    aDatiRiga(7) = CStr(IntervalloMassimo)
    
    ' 3. Passiamo l'INTERO VETTORE alla funzione AddRigaTabella
    Call AddRigaTabella(aDatiRiga)
    
    ' Disegno finale della tabella a video
    Call CreaTabella
    
End Sub
 

Ultima estrazione Lotto

  • Estrazione del lotto
    venerdì 30 ottobre 2026
    Bari
    58
    79
    20
    27
    07
    Cagliari
    64
    45
    51
    54
    62
    Firenze
    84
    69
    21
    54
    78
    Genova
    70
    24
    76
    56
    73
    Milano
    32
    36
    19
    33
    72
    Napoli
    01
    38
    67
    70
    36
    Palermo
    78
    04
    72
    84
    74
    Roma
    58
    70
    85
    21
    34
    Torino
    49
    82
    36
    69
    84
    Venezia
    21
    86
    70
    33
    63
    Nazionale
    06
    24
    10
    28
    63
    Estrazione Simbolotto
    37
    35
    11
    36
    06
Indietro
Alto