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
    martedì 27 ottobre 2026
    Bari
    65
    57
    90
    11
    73
    Cagliari
    33
    23
    74
    87
    08
    Firenze
    42
    04
    13
    18
    20
    Genova
    32
    42
    69
    22
    50
    Milano
    57
    41
    39
    10
    03
    Napoli
    58
    22
    28
    45
    39
    Palermo
    21
    03
    66
    26
    06
    Roma
    51
    31
    64
    89
    37
    Torino
    70
    08
    90
    78
    26
    Venezia
    65
    53
    03
    36
    56
    Nazionale
    44
    28
    46
    23
    02
    Estrazione Simbolotto
    32
    06
    12
    44
    43

Ultimi Messaggi

Indietro
Alto