Newsgroup: it.comp.lang.visual-basic
Titolo: [?] - Non so cosa mettere nell'oggetto, scusate [lungo]

Ciao a tutto il NG, rieccomi qui con le mie domande strane  =)
    Sto elaborando delle statistiche per il Lotto (praticamente voglio fare
la stessa cosa che è possibile consultare e scaricare da 
www.pianetalotto.it
per capirci, ma un pochino personalizzata)
In un Form ho definito un tipo di dati come il seguente
Private Type XRuota
    Attuale As Integer 'Ritatdo attuale dei numeri
    Storico As Integer 'Ritardo storico dei numeri
    Frequenza As Integer 'Frequenza storica dei numeri
End Type
Private Type TipoStatistica
    Numeri As String 'Separati da un - perchè non so a priori se sono 2, 3,
4 ... li splitto in un vettore di appoggio ed ho un sottovettore temporaneo
con i numeri che mi servono
    Bari As XRuota
    Cagliari As XRuota
    Firenze As XRuota
    Genova As XRuota
    Milano As XRuota
    Napoli As XRuota
    Palermo As XRuota
    Roma As XRuota
    Torino As XRuota
    Venezia As XRuota
End Type
    Ed un vettore
Dim Vettore() As TipoStatistica
    Faccio questo perchè potrei voler aumentare i dati da conservare per
ogni ruota e non voglio avere 30 campi con nomi assurdi per ogni elemento
del vettore. Poi ho il vantaggio che posso assegnare
    Elaboro la statistica e vedo se i numeri in una determinata estrazione
sono usciti o meno.
    Se sono usciti, devo
        - incrementare la frequenza della ruota X
        - vedere se il ritardo attuale è superiore al ritardo storico
        - azzerare il ritardo attuale
    Altrimenti
        - incrementare il ritardo attuale della ruota X
Giusto ?
    Quando arrivo al momento dell'assegnazione ho il problema che motiva
questo post =)
Ho pensato, vedo l'indice della ruota che sto analizzando (Ruota appunto) ed
apro un With sull'elemento che mi serve
                Select Case Ruota
                    Case Is = 1  'Bari
                        With Vettore(j).Bari
                    Case Is = 2  'Cagliari
                        With Vettore(j).Cagliari
                    Case Is = 3  'Firenze
                        With Vettore(j).Firenze
                    Case Is = 4  'Genova
                        With Vettore(j).Genova
                    Case Is = 5  'Milano
                        With Vettore(j).Milano
                    Case Is = 6  'Napoli
                        With Vettore(j).Napoli
                    Case Is = 7  'Palermo
                        With Vettore(j).Palermo
                    Case Is = 8  'Roma
                        With Vettore(j).Roma
                    Case Is = 9  'Torino
                        With Vettore(j).Torino
                    Case Is = 10 'Venezia
                        With Vettore(j).Venezia
                End Select
                If Trovato = UBound(AppNum) Then    'Ho trovato i numeri
                    If .Attuale > .Storico Then
                        .Storico = .Attuale
                    End If
                    .Attuale = 0
                    .Frequenza = .Frequenza + 1
                Else    ' Non ho trovato i numeri
                    .Attuale = .Attuale + 1
                End If
                End With
    Cos' facendo, apro il With e perdo il Select, poichè VB vuole che faccio
tutto all'interno del CASE e non mi lascia la possibilità di aprire la il
With e chiuderlo dove mi pare (ed ha pure ragione)
Allora ho pensato, in ASP c'è l'istruzione EXECUTE che mi permette di
costruire una stringa e di eseguirla come una riga di codice a RUN-TIME,
modifico il mio codice in questo modo
                Select Case Ruota
                    Case Is = 1  'Bari
                        Eseguilo = "With Vettore(j).Bari"
                    Case Is = 2  'Cagliari
                        Eseguilo = "With Vettore(j).Cagliari"
                    Case Is = 3  'Firenze
                        Eseguilo = "With Vettore(j).Firenze"
                    Case Is = 4  'Genova
                        Eseguilo = "With Vettore(j).Genova"
                    Case Is = 5  'Milano
                        Eseguilo = "With Vettore(j).Milano"
                    Case Is = 6  'Napoli
                        Eseguilo = "With Vettore(j).Napoli"
                    Case Is = 7  'Palermo
                        Eseguilo = "With Vettore(j).Palermo"
                    Case Is = 8  'Roma
                        Eseguilo = "With Vettore(j).Roma"
                    Case Is = 9  'Torino
                        Eseguilo = "With Vettore(j).Torino"
                    Case Is = 10 'Venezia
                        Eseguilo = "With Vettore(j).Venezia"
                End Select
                Execute (Eseguilo)
                If Trovato = UBound(AppNum) Then    'Ho trovato i numeri che
cercavo
                    If .Attuale > .Storico Then
                        .Storico = .Attuale
                    End If
                    .Attuale = 0
                    .Frequenza = .Frequenza + 1
                Else    ' Non ho trovato i numeri
                    .Attuale = .Attuale + 1
                End If
                End With
E scopro che VB conosce l'Execute sono come oggetto ADO o DAO.
    Non vorrei ripetere il codice 10 volte, perchè gia so che ci saranno
modifiche e non voglio doverle ripetere 10 volte aumentando il pericolo di
commettere errori.
    Non posso buttare tutto in una funzione perchè il tipo di dati che ho
definito è privato e VB si incazza se dichiaro un parametro con un tipo
definito.
    Non voglio rendere pubblico il tipo perchè verrà usato solo in questo
Form e non voglio incasinare ulteriormente la memoria.
Voi coem risolvereste la cosa ?
    sono sicuro che il problema è molto più semplice di quel che penso, ma
in questo momento mi sfugge la mandrakata che mi risolve il problema.
Mi sapete dare una mano voi ?    (Spero di essere stato abbastanza chiaro)
    Grazie 1000 per ogni eventuale risposta.
Ciao, Rocco

     Grazie 1000 per ogni eventuale risposta.
invece di usare una struttura usa una matrice 2D...
no?
ciao
Davide

 no?
    2D ?
    10 Ruote
    3 (ma saranno almeno 5) valori per ogni ruota
    Come li trasformo in 2D ?
        Mi chiarisci il concetto, credo di non aver afferrato il
suggerimento.
    Ciao, Rocco

 per capirci, ma un pochino personalizzata)
Ciao,
ho creato un intero framework di funzioni per il lotto (statistiche,
gestione estrazioni, importazione/esportazione in diversi formati delle
estrazioni, calcolo combinatorio, ecc, ecc...)
Se vuoi te lo posso inviare (forse lo puoi ancora trovare su
www.lottoactivex.interfree.it
, è un po' che non ho occasione di lavorarci)
Non so se risolve tutti i tuoi problemi ma probabilmente ti può facilitare
la vita.
Ciao
--
using System.Gtk.Forms = "
http://www.neodatatype.net/windowsforms/sgf.aspx
"
mathParser = "
http://www.neodatatype.net
"
sitoComune = "
http://www.it-lang-vb.net
"


usando al tua Xruota:
Private Type TipoStatistica
    ruota (10) as xRuota
end type
Dim Vettore() As TipoStatistica
quando devi accedere ad una ruota fai:
Vettore (i).ruota(n)
così nel select case setti n...
ciao
Davide

 Ciao
    Ti ringrazio 1 milione, studierò i tuoi sorgenti in modo molto accurato,
sicuramente imparerò qualcosa.
    Sto giocando con le statistiche lotto più per esercitazione che per
altro. Visto che hai già affrontato il problema sarai d'accordo con me se
dico che la faccenda è più complicata di quanto si pensi. Migliaia di record
e centinaia di condizioni da tenere presente. Giochetti sulle date,
manipolazioni di file e di stringhe a bizzeffe.
    Un'ottimo banco di prova per perfezionare il modo di programmare, non
credi ?
Ciao, Rocco

 David
    Ciao, Rocco e grazie ancora.

 Ciao
    Falso allarme, il sito non è più accessibile, mi si apre la pagina
principale di interfree.
    Potresti inviarmeli per favore ? Se pesano non fa niente, a parte che
non ti pesi mandarmeli =)
Ciao, Rocco

 principale di interfree.
http://lottoactivex.interfree.it/
 (non so se c'è l'ultima versione, se no te
li invio).
Comunque non ci trovi i sorgenti :)
E sicuramente è stato un ottimo banco di prova: il tutto mi è costato circa
4 anni di tempo libero :P  Se vuoi provarci "on your own" :)


 li invio).
Ho rimesso on-line la versione aggiornata qui:
http://utenti.lycos.it/lottoactivex/
Se a qualcuno interessasse



il link per registrarmi in realtà mi apre la form per installare phpbb
c'è qualche problema
ciao

 c'è qualche problema
Sto completando in questo momento la messa on-line :)
Prova ora.
P.S.: ti vedo già come registrato
Ciao
