Novità

Come si leggono da codice i valori nelle celle di una tabella?

lotto_tom75

Advanced Premium Member
Es. in questa... che ha anche un nome... :)

Codice:
Call CreaTabellaX("pippo",7,-1,0,2,0)

????

In particolare io avrei la necessita di leggervi... solo la prima riga di valori sotto i relativi titoli della tabella... (quindi la seconda riga della stessa).
 
Ultima modifica:
Ma ...

... perché generare una tabella ?

Essa contiene dei dati che in essa sono stati inseriti.

Quindi prima hai dati poi formi la tabella poi li vai a leggere.

E' un iter complicato ed inutile.

Se hai i dati a cosa ti serve complicarti la vita?

Metti che vuoi il primo e che esso abbia valore di circa 5000 (hai scritto che lo sai quanto è all'incirca)

Parti da 10Mila e recedi (9999 /9998 / 9997) quando trovi il più grande ti fermi.

Oppure hai un vettore bidimensionale ordini secondo la dimensione che contiene il 5000

e prendi il primo della lista. Cioè il più grande.

:)
 
Ma ...

... perché generare una tabella ?

Essa contiene dei dati che in essa sono stati inseriti.

Quindi prima hai dati poi formi la tabella poi li vai a leggere.

E' un iter complicato ed inutile.

Se hai i dati a cosa ti serve complicarti la vita?

Metti che vuoi il primo e che esso abbia valore di circa 5000 (hai scritto che lo sai quanto è all'incirca)

Parti da 10Mila e recedi (9999 /9998 / 9997) quando trovi il più grande ti fermi.

Oppure hai un vettore bidimensionale ordini secondo la dimensione che contiene il 5000

e prendi il primo della lista. Cioè il più grande.

:)

Caro joe hai perfettamente ragione e anche io penso che la tabella per questo scopo di "prelevare il valore di massima frequenza con la relativa lunghetta" sia perfettamente una sovrastruttura inutile...

Solo che per adesso sono riuscito ad evidenziare questo dato solo tramite la tabella appunto.

Ho provato anche ad adottare soluzioni + leggere... tipo le collection

Codice:
For Each clsN In Coll
      ReDim aValue(9)
      aValue(1) = clsN.numero
      aValue(2) = clsN.aRuote
      aValue(3) = clsN.nSorte
      aValue(4) = clsN.nritardo
      aValue(5) = clsN.RetRitMax
      aValue(6) = clsN.RetRitIncrRitMax
      aValue(7) = clsN.retfreq
      aValue(8) = clsN.difforo
      aValue(9) = clsN.contatore
      Call AddRigaTabella(aValue)

      'Call OrdinaMatrice(Coll,1)
      'Call Scrivi(clsN.retfreq & " - " & clsN.numero & " - " & clsN.nritardo)

   Next
      'Call OrdinaMatriceTurbo(Coll,1,aValue(7))
Loop
End If


      'Call OrdinaMatrice(Coll,1,7)
      'Call Scrivi(clsN.retfreq & " - " & clsN.numero & " - " & clsN.nritardo)

End If

   Call OrdinaItemCollection(Coll,"retfreq","Key")

   For Each clsN In Coll
   Call Scrivi(clsN.retfreq & " --- " & clsN.numero)
   Next

Ma purtroppo al momento in questo modo non mi ordina un bel niente... perchè non so utilizzare le funzioni di ordinamento in rapporto a quelle... Ho provato in mille modi ma nulla...

E anche se me le ordinasse poi non saprei come estrapolare il primo o l'ultimo valore che mi interessa cioè quello con massima frequenza appunto.

Grazie mille se puoi dipanarmi... questa matassa delle "collection" con un pratico esempio (magari in rapporto a questa mia specifica esigenza che puoi se vuoi trovare spiegata abbastanza più dettagliatamente in questo altro mio thread).

Ciao big

:)

ps: il valore di massima frequenza, da estrapolare con la relativa lunghetta, è totalmente ignoto e dinamico ogni volta...
 
Ultima modifica:
Si ho visto,

Ieri col cell. ci ho dato uno sguardo veloce,

ma il problema è che le collezioni non le so gestire con la padronanza necessaria.

Non ho neppure i file esterni per poter provare. Comunque sia ...

La frequenza l'hai al "punto 7"

Hai (meglio avevi) già ordinato sulla "colonna 7"

Dopo l'ordinamento la lunghetta con maggiore frequenza è all'indice "1"

La prima. Con il massimo valore che la "funzione ordina" ha trovato nella colonna frequenza.

Se la lunghetta è al "punto numero" ... quella dovrebbe essere.

1 ... anch'essa.

:)
 
Si ho visto,

Ieri col cell. ci ho dato uno sguardo veloce,

ma il problema è che le collezioni non le so gestire con la padronanza necessaria.

Non ho neppure i file esterni per poter provare. Comunque sia ...

La frequenza l'hai al "punto 7"

Hai (meglio avevi) già ordinato sulla "colonna 7"

Dopo l'ordinamento la lunghetta con maggiore frequenza è all'indice "1"

La prima. Con il massimo valore che la "funzione ordina" ha trovato nella colonna frequenza.

Se la lunghetta è al "punto numero" ... quella dovrebbe essere.

1 ... anch'essa.

:)

No joe...
La funzione ordina per la colonna (7) ossia per la colonna della frequenza mi ordina correttamente i valori solo se la utilizzo con la tabella con il code:

Codice:
Call CreaTabella(7,- 1,0,2,0)   ' ordina correttamente in modo decrescente mostrando come prima ed unica riga il valore di FQ + ALTO

Ma appunto qui mi scontro con il problema che il risultato è ottimo solo per la visualizzazione in output e non come dato da poter elaborare ulteriormente magari salvandolo in una stringa... o vettore... proprio perchè non riesco a carpire il valore mostrato nella cella di tabella relativo alla lunghetta estrapolata...

Mentre se utilizzo la collection non mi ordina nulla... mostrandomi sempre la sequenza delle lunghette presenti nel file txt da analizzare con le relative frequenze poste a casaccio e non in ordine decrescente o crescente voluto...

L'alternativa che dicevi tu sopra senza ricorrere alle collection ovverosia il tentativo di cercare la frequenza + alta partendo dall'analisi di un valore di frequenza limite (teorico) di soglia massima iniziale... mi piacerebbe molto provarla... ma non ho la minima idea di come fare il downgrade di questo tipo di ricerca x frequenza tramite analisi di tipo integrale del file txt.
 
Prima di essere una tabella

sono o potrebbero essere una matrice quindi ordinamatrice fa la stessa identica cosa.

Altrimenti una tabella costruita "manualmente" avrebbe risultati diversi

da una costruita dalle funzioni di spaziometria.

Per il resto ho appena pubblicato uno script dove c'è un "ordinamento manuale"

(cioè fatto dallo script) dei risultati dove i numeri sono abbinati alla loro frequenza.

Codice:
   fremax2 = fremax + 1
   Do
      cc = 0
      fremax2 = fremax2 - 1
      If fremax2 = 0 Then Exit Do
      For n1 = 1 To 89
         For n2 = n1 + 1 To 90
            If ambi(n1,n2) = fremax2 Then
               cc = cc + 1
               Scrivi Format2(n1) + "." + Format2(n2) + " fre " + CStr(fremax2)
               If cc = abf Then Exit Do
            End If
         Next
      Next
   Loop

Puoi cercare "blubble-sort" per avere altri esempi di calcolo.

Ma ne trovi una infinità già su questo sito.

:)
 
Ultima modifica:
Prima di essere una tabella

sono o potrebbero essere una matrice quindi ordinamatrice fa la stessa identica cosa.

Altrimenti una tabella costruita "manualmente" avrebbe risultati diversi

da una costruita dalle funzioni di spaziometria.

Per il resto ho appena pubblicato uno script dove c'è un "ordinamento manuale"

(cioè fatto dallo script) dei risultati dove i numeri sono abbinati alla loro frequenza.



Puoi cercare "blubble-sort" per avere altri esempi di calcolo.

Ma ne trovi una infinità già su questo sito.

:)

Joe io ho provato sia a far girare il tuo codice soprastante, sia a cercare "blubble-sort" nel forum ma nel primo caso mi da sempre output white e nel secondo mi riporta come risultato di ricerca solo questo stesso thread o_O:unsure:

Per il primo punto risolto... ho trovato questo tuo recente post (il codice sopra si riferiva quasi sicuramente ad una parte di questo) https://forum.lottoced.com/threads/...vore-cerco-aiuto-script.2193139/#post-2223003 (y)

Così di primo acchito comunque temo di non saperlo modificare in modo che invece di analizzare gli ambi by 90 come fa adesso lo script che hai postato analizzi il mio file txt di 20ine g2 by gruppo numerico di base di volta in volta desiderato ?


Per l'altro punto continuo a non trovare nulla.. con il termine "blubble-sort" ?
 
Ultima modifica:
OrdinaItemCollection(" nome collezione","retfreq",,,- 1)
Prova così.
Se non sbaglio si chiama così.


Purtroppo legend anche così come mi hai gentilmente indicato non mi ordina nulla... :cautious:

Posto qui sotto x maggior chiarezza espositiva la mia function che vorrei modificare al fine di poter estrapolare appunto solo la lunghetta (in questo caso 20ina) facente parte di un file txt di 20ine dinamiche particolari con massima frequenza x A su CA.

Codice:
Function analizzatorefilematricetxt(inizio,counterrange)
      Dim k,y
      Dim Classe
      Dim aCol
      ReDim aNum(90)
      Dim i
      Dim nSorte,Fine,RetRit1,QuantitaNumeriScelti,aRuoteSel,RuoteSelezionate,RetRitMax,RetIncrRitMax,retfreq',inizio
      Dim ColTot
      Scrivi
      Scrivi "Elaborazione per il range temporale dall'estrazione n. " & inizio & " all'estrazione n. " & counterrange + 1
      Scrivi
      Dim sfile
      Dim filexverificafinale
filexverificafinale = ".\filexverificafinale.txt"
Call Messaggio("Lettura file di testo")
ReDim aRighe(0)
Call LeggiRigheFileDiTesto(sfile,aRighe)
For k = 0 To UBound(aRighe)
If aRighe(k) <> "" Then
ReDim aN(0)
Call SplitByChar("." & aRighe(k),".",aN)
End If
Next
   sfile = ".\matrice-numerica-desiderata.txt"
         ReDim aRuoteSel(12)
         For k = 2 To 2 'analizza la ruota di cagliari
         Next
      Dim contatore
      Call Messaggio("Lettura file di testo")
      ReDim aRighe(0)
      Call LeggiRigheFileDiTesto(sfile,aRighe)
Call Scrivi
Call Scrivi("Classe: " & Classe & " - " & " sorte: " & nSorte)
Call Scrivi
   ReDim aTitoli(9)
   aTitoli(1) = "Formazione"
   aTitoli(2) = "Ruota"
   aTitoli(3) = "Sorte"
   aTitoli(4) = "Ritardo"
   aTitoli(5) = "Ritardo Massimo"
   aTitoli(6) = "Incremento di RItardo Massimo"
   aTitoli(7) = "Frequenza"
   aTitoli(8) = "Diff"
   aTitoli(9) = "Counter"
   Call InitTabella(aTitoli)
      For y = 0 To UBound(aRighe)
      If aRighe(y) <> "" Then
      ReDim aNum(0)
      Call SplitByChar("." & aRighe(y),".",aNum)
      contatore = contatore + 1
      nSorte = 2
      ReDim aRuoteTmp(1)
      Dim contatorexinserimentofrq
nSorte = 2
Classe = 20
ColTot = InitSviluppoIntegrale(aNum,Classe)
If ColTot > 0 Then
Do While GetCombSviluppo(aCol) = True
i = i + 1
   Dim clsN
   Dim Coll
   Set Coll = GetNewCollection
ReDim aruote7(1)
aruote7(1) = CA_
aRuoteTmp(1) = aruote7(1)
  Call StatisticaFormazioneTurbo(aCol,aRuoteTmp,nSorte,RetRit1,RetRitMax,RetIncrRitMax,retfreq,inizio,counterrange)
Diff = RetRitMax - RetRit1
Set clsN = New clsRitardo
      clsN.numero = StringaNumeri(aCol)
      clsN.aRuote = "ruota:" & NomeRuota(aruote7(1))
      clsN.nSorte = nSorte
      clsN.nritardo = RetRit1
      clsN.RetRitMax = RetRitMax
      clsN.RetRitIncrRitMax = RetIncrRitMax
      clsN.retfreq = retfreq
      clsN.difforo = Diff
      clsN.contatore = contatore
Dim Diff
Diff = RetRitMax - RetRit1
Dim rapportoRARS
rapportoRARS = RetRit1/RetRitMax
Call AvanzamentoElab(1,ColTot,i)
Coll.Add clsN,"k" & clsN.numero
If(RetRit1 >= 0) Then
Call Messaggio("Trovata!!! :) per la ruota di: " & NomeRuota(aruote7(1)))
contatore = contatore + 1
Else
Call Messaggio("Colonna " & i)
End If
If ScriptInterrotto Then Exit Do
For Each clsN In Coll
      ReDim aValue(9)
      aValue(1) = clsN.numero
      aValue(2) = clsN.aRuote
      aValue(3) = clsN.nSorte
      aValue(4) = clsN.nritardo
      aValue(5) = clsN.RetRitMax
      aValue(6) = clsN.RetRitIncrRitMax
      aValue(7) = clsN.retfreq
      aValue(8) = clsN.difforo
      aValue(9) = clsN.contatore
      Call AddRigaTabella(aValue)
  Next
Loop
End If
End If
Next
Call CreaTabella(7,- 1,0,2,0) ' ordina in modo decrescente mostrando come prima ed unica riga il valore di FQ + ALTO
Call Scrivi("Ultima FQ rilevata da file txt : " & retfreq)
Scrivi
Call Scrivi("formazione mostrata dopo ordinamento turbo " & aValue(1) & " fq " & aValue(7))
Scrivi
     Call ScriviFile(filexverificafinale,StringaNumeri(aNum),False,True)
     Call CloseFileHandle(filexverificafinale) ' chiudo l'handle al file

End Function

In sostanza sono riuscito con la riga

Codice:
Call CreaTabella(7,- 1,0,2,0)

ad evidenziare e visualizzare a video ogni volta solo il dato voluto ossia la 20ina a massima fq ma in questo modo il gruppo numerico corrispondente non è gestibile per poterlo riutilizzare per altre analisi via codice... ecco perchè vorrei evitare la tabella e ordinare semplicemente la collection in modo da avere il dato facilmente come ultima stringa... dell'elenco di FQ precedentemente ordinato... in modo crescente...

Ad ogni modo mi andrebbe bene qualsiasi soluzione che permetta di estrapolare sottoforma di stringa o di vettore la 20ina a fq max scelta.. tra quelle presenti nel file txt sopra riportato...


:)
 
Prima di essere una tabella

sono o potrebbero essere una matrice quindi ordinamatrice fa la stessa identica cosa.

Altrimenti una tabella costruita "manualmente" avrebbe risultati diversi

da una costruita dalle funzioni di spaziometria.

Per il resto ho appena pubblicato uno script dove c'è un "ordinamento manuale"

(cioè fatto dallo script) dei risultati dove i numeri sono abbinati alla loro frequenza.



Puoi cercare "blubble-sort" per avere altri esempi di calcolo.

Ma ne trovi una infinità già su questo sito.

:)

x joe

ho provato a fare qualcosa di simile prelevando le formazioni da file txt ma non mi funzia oltre ad essere estremamente lento x sole 2000 righe (formazioni) presenti nel file txt... ??

Codice:
      Option Explicit
      Sub Main
     
     
      Dim k,y
      Dim Classe
      Dim aCol
      ReDim aNum(90)
      Dim i
      Dim nSorte,Fine,RetRit1,QuantitaNumeriScelti,aRuoteSel,RuoteSelezionate,RetRitMax,RetIncrRitMax,RetFreq,Inizio
      Dim ColTot
     
    
      Dim sfile
     
     
      sfile = ScegliFile(".\",".txt","lunghette.txt")
     
     
         ReDim aRuoteSel(12)
         RuoteSelezionate = ScegliRuote(aRuoteSel)
        
         Call Scrivi(" ---------------------------------------------------------------- ")
         Call Scrivi(" Le ruote sottostanti nella ricerca vengono considerate SEPARATE! ")
         Call Scrivi(" ---------------------------------------------------------------- ")
        
Scrivi
Call Scrivi(" Elaborazione effettuata con archivio lotto aggiornato al  " & giorno(EstrazioneFin) & "-" & Mese(EstrazioneFin) & "-" & Anno(EstrazioneFin))
Scrivi
     
     
         For k = 1 To RuoteSelezionate
           
            Call Scrivi("Scelta ruota " & NomeRuota(aRuoteSel(k)) & " - " & SiglaRuota(aRuoteSel(k)))
           
         Next
     
     
      Scrivi
     
      Scrivi
     
     
           Dim Diff
     
      Diff = RetRitMax - RetRit1
     
      Dim fqmaxdipartenza
      fqmaxdipartenza=5000
     
      Dim fqdirilevamentodinamico
     
     
      Dim contatore
     
      Call Messaggio("Lettura file di testo")
      ReDim aRighe(0)
      Call LeggiRigheFileDiTesto(sfile,aRighe)
     
     
     
     
      For y = 0 To UBound(aRighe)
      If aRighe(y) <> "" Then
      ReDim aNum(0)
     
     
      'Call SplitByChar(aRighe(y),".",aNum) -> da risultato errato
     
      'Call SplitByChar("." & aRighe(y),".",aNum)
     
      Call SplitByChar("." & aRighe(y),".",aNum)
     
      contatore = contatore + 1
     
     
     
     
      nSorte = 2
     
     
     
     
      ReDim aRuoteTmp(1)
     
     
      For k = 1 To RuoteSelezionate
           
         aRuoteTmp(1) = aRuoteSel(k)
        
      Call StatisticaFormazioneTurbo(aNum,aRuoteTmp,nSorte,RetRit1,RetRitMax,RetIncrRitMax,RetFreq)
            
     
      For fqdirilevamentodinamico = fqmaxdipartenza To 0 Step -1
        
      If(RetRit1 >= 0 And RetFreq = fqdirilevamentodinamico) Then
               
              
      Call Scrivi(StringaNumeri(aNum) & " RA: " & RetRit1 & " RS: " & RetRitMax & " INCMAX: " & RetIncrRitMax & " FQ: " & RetFreq & " RUOTA: " & NomeRuota(aRuoteSel(k)) & " Diff " & Diff & " sorte: " & nSorte)
     
     
      Exit For
        
      End If
     
     
     
      Call AvanzamentoElab(0,UBound(aRighe),contatore)
     
      Dim x
     
      'If x Mod 100 = 0 Then
     
      'Call Messaggio("Colonna : " & x)
     
      If ScriptInterrotto Then Exit For
     
      'Call AvanzamentoElab(0,UBound(aRighe),1)
     
      'End If
     
     
     
      Next
     
      Next
     
      End If
     
      'Next
     
      Next
     
      'Loop
      'End If
     
      Call Scrivi
     
      Call Scrivi("Tempo trascorso: " & TempoTrascorso)
     
      End Sub
 
BREAKING TOM NEWS for joe ? :D

forse ce l'ho fatta! ?????

forse-ce-lho-fatta.jpg

Devo ancora vedere se esce dal for al momento giusto però... ;)?
In sostanza forse alla fine... sono riuscito a ciclare correttamente il controllo di FQ partendo da un suo massimo teorico e confrontandola con tutte quelle presenti nel file txt e riducendola a step 1 fino a che non coincide appunto con la prima di valore massimo relativa ad una formazione analizzata e presente nel file txt. Grazie mille per la dritta concettuale e per l'es. di codice ispirazionale... joe!!! ?:) Rispetto alla soluzione della tabella mi dovrebbe portare in output qualcosa di + gestibile per gli ulteriori eventuali sviluppi seguenti... anche se rispetto a quella è un pò + lento... come flusso di analisi... ??
 
Ultima modifica:
Fammi capire:

Hai un file di testo dove ci sono dei campi.

Uno di questi è una lunghetta l'altro è la frequenza (o qualsiasi altra cosa).

Quando leggi questo file hai tante righe.

For Riga = Zero To Fine del File
''''
Next

All'interno di ogni ciclo Splitti i valori della riga e di questi sembrano interessartene 2.

La Lunghetta e la Frequenza (ma potrebbero essere molti e qualsiasi altro).

Se costruisci una matrice bidimensionale

correlando Lunghetta e Frequenza

quando ordini per la colonna 2 dalla più grande alla più piccola ...

Alla fine dovresti avere al primo posto

la lunghetta con maggiore frequenza assieme al suo valore di frequenza.

Riguardo quanto detto,

se scrivi: vbscript bubblesort nel classico motore di ricerca

ti viene indicato tra i primi messaggi uno del 3/5/2013

Con questo hai sia l'esempio del funzionamento del codice.

che una "animazione" del come funziona.

Di questo a te serve solo di capire ... la parte più semplice.

quella che stabilisce se c'è un valore maggiore (di frequenza)

Dunque dovresti leggere ogni elemento frequenza sino a trovare il maggiore,

ed a quel punto prendere la lunghetta ad esso abbinata.

Esattamente come faresti se avessi tutti i ritardi di una qualche sorte ...

... scorrendoli uno ad uno ...

prenderesti il più grande valore nel momento in cui lo registri

per avere e leggere abbinato ad esso la data dello storico.

:)
 
Ultima modifica:
Ti allego il piccolo script dove in forma compiuta hai

Una matrice contenente le date di estrazione

del 53 sulla Nazionale ed il ritardo di questo numero.

Da questa ... lunga lista ...

la seconda parte del programma si incarica di trovare lo storico.

E relativamente a questo, "la data" in cui esso si è realizzato.

Codice:
Option Explicit
Sub Main
'Esempio Estrazione dei dati  relativi al Valore Massino
'Storico By Joe 
  Dim Estrazione,R(2),I,T,Rit
  Dim L(1000,2)
  Dim Numero : Numero = 53
  Dim Ruota : Ruota = NZ_
  For Estrazione = 7440 To EstrazioneFin
    Rit = Rit + 1
    If Posizione(Estrazione,Ruota,Numero) > 0 Then
      I = I + 1 : L(I,1) = DataEstrazione(Estrazione) : L(I,2) = Rit
      Scrivi L(I,1) & " rit " & FormatSpace(L(I,2),3)
      Rit = 0
    End If
  Next
  'Ricerca Storico
  Rit = 0
  For T = 1 To I
    If L(T,2) > Rit Then
      R(1) = L(T,1)
      R(2) = L(T,2)
      Rit = L(T,2)
    End If
  Next
  Scrivi
  Scrivi "Numero " & Numero & " " & NomeRuota(Ruota)
  Scrivi Space(3) & "Data" & Space(5) & "Rit_Sto"
  Scrivi R(1) & Space(4) & R(2)
End Sub

:)
 
Grazie ancora joe ma come ti ho scritto sopra ho già risolto e l'ultimissimo aggiornamento al riguardo è che fortunatamente ho capito anche dove rallentava il flusso riuscendo poi a velocizzarlo ;)
 
Ultima modifica:

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 14 gennaio 2025
    Bari
    41
    25
    12
    73
    55
    Cagliari
    54
    20
    48
    32
    67
    Firenze
    75
    23
    68
    10
    38
    Genova
    33
    27
    81
    70
    64
    Milano
    68
    01
    64
    86
    87
    Napoli
    47
    75
    45
    10
    21
    Palermo
    55
    86
    33
    53
    70
    Roma
    88
    78
    61
    06
    07
    Torino
    76
    08
    23
    61
    82
    Venezia
    25
    15
    49
    21
    81
    Nazionale
    70
    10
    32
    78
    07
    Estrazione Simbolotto
    Bari
    07
    14
    28
    45
    31
Indietro
Alto