Novità

Mente da programmatore

nella funzione statististica che hai messo nella classe archivio c'è un piccolo errore

1636635260787.png

quell'if spostalo e mettilo prima di questo

1636635301217.png
 
Va in errore prima di end sub

 
L'errore risiede qui:
Codice:
    Function GetQuantitaNumeri() As Integer
            Return Numeri.Estratto.GetUpperBound(0)

        End Function

nella struct formazione
 
allora secondo te si deve fare prima l'inizializzazione e poi lanciare la statistica oppure prima la statistica e poi l'inizializzazione ?
 
tu lanci la statistica prima di inizializzare la struttura percio ti da errore sui numeri
 
ad ogni modo c'è anche un altro problema , non puoi riferirti in quel modo al form principale perche quello è un 'istanza del form principale ,


lancia statistica diventa cosi

Codice:
Sub LanciaStatistica()
        Dim frz As New struct_formazione
        Dim aNumeri() As Integer
        Dim aRuote() As Boolean
        Dim nSorte As Integer
        Dim Inizio As Integer
        Dim fine As Integer

        GetArrayNumeriFromString(TextBox1.Text, aNumeri)
        frmMain.CltSelRuote1.GetCheckSelezionate(aRuote)
        nSorte = Me.cmbsorte.SelectedItem
        Inizio = frmMain.CtlRangeEstrazioni1.Inizio
        fine = frmMain.CtlRangeEstrazioni1.Fine
        frz.Inizializza(aNumeri, aRuote, nSorte, Inizio, fine)
        If cArchivio.StatFormazione(frz) Then
        End If
    End Sub

poi cambia struct_Formazione

Codice:
 Public Structure struct_formazione ' definisce una lunghetta da sottoporre all'analisi statistica 
        Dim Inizio As Integer
        Dim Fine As Integer


        Dim Numeri As StrNumeri
        Dim aPosizioni() As Boolean
        Dim aRuote() As Boolean
        Dim Sorte As Integer

        Dim Ritardo As Integer
        Dim RitardoMax As Integer
        Dim Frequenza As Integer
        Dim Presenze As Integer
        Dim IncrRitMax As Integer


        Dim aUscite() As struct_uscita
        Dim UBoundaUscite As Integer
        Dim UBoundaUsciteCur As Integer

        Dim EstrEsam As Integer

        Sub Inizializza(aNumeri() As Integer, aRuoteUsate() As Boolean, nSorte As Integer, RangeIni As Integer, RangeFin As Integer, Optional aPos() As Boolean = Nothing)
            Dim qNumeri As Integer = aNumeri.GetUpperBound(0)

            Inizio = RangeIni
            Fine = RangeFin
            Sorte = nSorte

            ReDim aPosizioni(5)
            If IsNothing(aPos) Then
                For k As Integer = 1 To 5
                    aPosizioni(k) = True
                Next
            Else
                For k As Integer = 1 To 5
                    aPosizioni(k) = aPos(k)
                Next
            End If

            ReDim aRuote(11)
            For k As Integer = 1 To 11
                aRuote(k) = aRuoteUsate(k)
            Next

            If aRuoteUsate(12) Then
                For k As Integer = 1 To 10
                    aRuote(k) = True
                Next

            End If
            Numeri.Dimensiona(qNumeri)
            For k As Integer = 1 To qNumeri
                Numeri.SetNumero(aNumeri(k), k)
            Next

            Ritardo = 0
            RitardoMax = 0
            Frequenza = 0
            Presenze = 0
            EstrEsam = 0
            IncrRitMax = 0

            UBoundaUscite = 100
            UBoundaUsciteCur = 0
            ReDim aUscite(UBoundaUscite)
        End Sub
        Sub AddUscita(Ritardo As Integer, RitardoMax As Integer, Frequenza As Integer, Presenze As Integer, IncrRitMax As Integer, IdEstr As Integer, Ruota As Integer, Optional aPos() As Boolean = Nothing)

            aUscite(UBoundaUsciteCur).IdEstr = IdEstr
            aUscite(UBoundaUsciteCur).Ritardo = Ritardo
            aUscite(UBoundaUsciteCur).RitardoMax = RitardoMax
            aUscite(UBoundaUsciteCur).Presenze = Presenze
            aUscite(UBoundaUsciteCur).Frequenza = Frequenza
            aUscite(UBoundaUsciteCur).IncrRitMax = IncrRitMax




            aUscite(UBoundaUsciteCur).Ruota = Ruota
            aUscite(UBoundaUsciteCur).Dimensiona()

            If Not IsNothing(aPos) Then
                For e = 1 To 5
                    aUscite(UBoundaUsciteCur).aPos(e) = aPos(e)
                Next
            End If

            UBoundaUsciteCur += 1

            If UBoundaUsciteCur = UBoundaUscite Then
                UBoundaUscite += 100
                ReDim Preserve aUscite(UBoundaUscite)
            End If
        End Sub
        Function GetQuantitaUscite() As Integer
            Return UBoundaUsciteCur - 1
        End Function

        Function GetQuantitaNumeri() As Integer
            Return Numeri.Estratto.GetUpperBound(0)

        End Function

        Sub ComprimiUscite()
            Dim x As Integer = GetQuantitaUscite()
            If x > 0 Then
                ReDim Preserve aUscite(GetQuantitaUscite)
            End If

        End Sub
    End Structure
 
ora riprova a fare la statistica e metti il breakpoint che ti dicevo prima per poter valutare frz
 
oh perfetto ,allora adesso cè da impostare le colonne della list view , metti come modalita di visualizzazione "dettagli" , poi inserisci le colonne nell'ordine che vuoi
le colonne da mettere sono ovviamente tutti i parametri della formazione quindi
numeri
ruote
sorte
ritardo
ritardomax
incrementoritmax
frequenza
presenze
indiceDiConvenienza ( da calcolare)
 
il form della statistica io lo intendevo cosi con un campo testo piu piccolo , anche perche di liste ce ne vogliono 2 , in una andremno a mettere le uscite della formazione

1636638949374.png
 
ti servirà una funzione per trasformare l'array delle ruote che leggi da frz in una stringa , attento che l'array è boolean
 
provalo su un progetot a parte dove inserisci una listview e un pulsante nel pulsante metti questo

Codice:
  ListView1.View = View.Details
        ListView1.Columns.Add("Titolo 1")
        ListView1.Columns.Add("Titolo 2")

        Dim itm As ListViewItem = ListView1.Items.Add("a")
        itm.SubItems.Add("b")
 
Codice:
Public Class frmStatLung
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles ButtonScegliNumeri.Click
        SelezionaNumeri(TextBox1.Text)
    End Sub

    Private Sub frmStatLung_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        LoadComboSorte(cmbsorte)
        addcolumns()
    End Sub

    Private Sub ButtonFlash_Click(sender As Object, e As EventArgs) Handles ButtonFlash.Click
        LanciaStatistica()
    End Sub
    Sub LanciaStatistica()
        Dim frz As New struct_formazione
        Dim aNumeri() As Integer
        Dim aRuote() As Boolean
        Dim nSorte As Integer
        Dim Inizio As Integer
        Dim fine As Integer
        GetArrayNumeriFromString(TextBox1.Text, aNumeri)
        frmMain.CltSelRuote1.GetCheckSelezionate(aRuote)
        nSorte = Me.cmbsorte.SelectedItem
        Inizio = frmMain.CtlRangeEstrazioni1.Inizio
        fine = frmMain.CtlRangeEstrazioni1.Fine
        frz.Inizializza(aNumeri, aRuote, nSorte, Inizio, fine)
        If cArchivio.StatFormazione(frz) Then
            Dim itm As ListViewItem = CtlLvOrdinabile1.Items.Add(TextBox1.Text)
            itm.SubItems.Add(RuoteBToString(aRuote))
            itm.SubItems.Add(frz.Sorte)
            itm.SubItems.Add(frz.Inizio)
            itm.SubItems.Add(frz.Fine)
            itm.SubItems.Add(frz.IncrRitMax)
            itm.SubItems.Add(frz.Frequenza)
            itm.SubItems.Add(frz.Presenze)
            CtlLvOrdinabile1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)

        End If
    End Sub
    Sub addcolumns()
        CtlLvOrdinabile1.View = View.Details
        CtlLvOrdinabile1.Columns.Add("Numeri")
        CtlLvOrdinabile1.Columns.Add("Ruote")
        CtlLvOrdinabile1.Columns.Add("Sorte")
        CtlLvOrdinabile1.Columns.Add("Ritardo")
        CtlLvOrdinabile1.Columns.Add("RitardoMax")
        CtlLvOrdinabile1.Columns.Add("IncrementoRitardoMax")
        CtlLvOrdinabile1.Columns.Add("Frequenza")
        CtlLvOrdinabile1.Columns.Add("Presenze")
    End Sub
End Class

Codice:
    Function RuoteBToString(aRuote() As Boolean) As String
        Dim K As Long
        Dim SB As New StringBuilder
        For K = 1 To 11
            If aRuote(K) = True Then
                SB.Append(NomiRuote(K).NomeAbbreviato)
                SB.Append(".")
            End If
        Next
        SB.Remove(SB.Length - 1, 1)
        Return SB.ToString
    End Function
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 11 gennaio 2025
    Bari
    73
    43
    01
    58
    81
    Cagliari
    69
    60
    18
    02
    10
    Firenze
    25
    32
    18
    55
    54
    Genova
    48
    05
    40
    34
    69
    Milano
    10
    07
    70
    44
    79
    Napoli
    11
    89
    01
    34
    80
    Palermo
    37
    80
    82
    44
    77
    Roma
    78
    04
    38
    39
    56
    Torino
    08
    13
    30
    27
    24
    Venezia
    56
    75
    36
    18
    70
    Nazionale
    63
    83
    19
    31
    80
    Estrazione Simbolotto
    Bari
    35
    34
    12
    23
    20
Indietro
Alto