
Originariamente inviata da
optime
posta qualcosa e vediamo di sistemarlo assieme
Ti dico grazie fin da ora, che si arrivi al fine o meno 
Parto dall'inizio, così magari è più chiaro ciò che mi piacerebbe fare.
Questo piccolo programmino non fa altro che interfacciarsi con un software che tratta il gioco del lotto, software completamente scritto da una persona privata e assolutamente libero a tutti, quindi nessuna violazione di nessun tipo.
La stessa persona che scrisse il software mi aiutò all'epoca a scrivere il codice che ho adesso per eseguire l'aggiornamento dell'archivio estrazioni, nel mio caso mi interessava solo quello del 10elotto ogni 5 minuti.
Purtroppo il progetto è stato abbandonato e la persona che lo seguiva non ne ha più alcun interesse, mi piacerebbe poter continuare ad utilizzarlo potendo aggiornare l'archivio, null'altro.
Cosa che ho fatto fin poco fa scaricando il file in html come indicato qualche post sopra, ora come suggerito da alka sarebbe ottimo gestire il file json che è l'end point, ma ho difficoltà a gestirlo non avendolo mai fatto, come si evince non sono un programmatore, ma appassionato 
Il programmino non faceva altro che prendere quel file dal web e farlo diventare archivio consultabile per il software principale, tutto qua.
La prima cosa che affrontammo all'epoca era il fatto di dover "ciclare" ogni volta il file per capire a che punto era fermo l'archivio delle estrazioni, essendo esse estratte ogni 5 minuti, cosa che con il VB6 io faccio così:
codice:
sDataUltimaEstr = av(2)
' iniziamo il ciclo di lettura delle pagine html
sNuovaData = sDataUltimaEstr ' partiamo dall'ultima data disponbile
ValTot = DateDiff("d", sDataUltimaEstr, Now) + 1 ' calcola i giorni totali dall'ultima in archivio a oggi
bFerma = False
Do While Format(sNuovaData, "yyyymmdd") <= Format(Now, "yyyymmdd")
sLinkHtml = "https://www.lotto-italia.it/del/estrazioni-e-vincite/popup-pdf/estrazioni-giorno.json?data=" & Format(sNuovaData, "yyyymmdd") ' costruisce il link base
sFileLocal = App.Path & "\Temp\" & Format(sNuovaData, "yyyymmdd") & ".html" ' costruuisce il percorso per il file in locale
Call DownloadFromWeb(sLinkHtml, sFileLocal) ' scarica il file
ReDim aEstr(0) As STRUCT_ESTRAZIONE_10LOTTO
LblDataAggiunta.Caption = sNuovaData
Call LeggiFileHtmlTornaEstrazioni(sFileLocal, aEstr, Year(sNuovaData)) ' richiamo la funzione "LeggiFileHtmlTornaEstrazioni"
Call SalvaEstrazioni(aEstr, sDataUltimaEstr, sNuovaData, NumEstr, TotInserite) ' richiamo la funzione "SalvaEstrazioni"
sNuovaData = DateAdd("d", 1, sNuovaData) ' aggiunge un giorno e ottiene una nuova data
Poi con il codice che riporto qui andavamo ad alimentare le varie "variabili" che erano :
data, numero estrazione, numeri estratti e all'epoca numero oro che era l'unica cosa in più che avevano aggiunto.
La struttura dati era questa:
codice:
' struttura per accesso al file base dati estrazioni
Type STRUCT_DATA_EST
nNumEstrazione As Integer
GG As Integer
Mm As Integer
AA As Integer
End Type
Type STRUCT_ESTRAZIONE_10LOTTO
idEstr As Long
strctData As STRUCT_DATA_EST
aNum(1 To 35) As Byte
nNumOro As Byte
End Type
il codice che gestiva il tutto era quello postato sopra, è tanto lungo e qui non me lo lascia postare.
codice:
Function convertJsonToVariantArray(ByVal jsonString As String) As Variant()
Dim cleanedUpArray() As Variant
Dim brokenUpRows() As String
'Remove the first and last square bracket in the string
jsonString = Right$(jsonString, Len(jsonString) - 2)
jsonString = Left$(jsonString, Len(jsonString) - 2)
'Break up the string in an array
brokenUpRows = Split(jsonString, "], [")
Dim counter As Integer
counter = 0
Dim counter2 As Integer
Dim brokenUpCols As Variant
ReDim linkArray(UBound(brokenUpRows)) As String
For counter = 0 To UBound(brokenUpRows)
brokenUpCols = Split(brokenUpRows(counter), ",")
If counter = 0 Then
ReDim cleanedUpArray(UBound(brokenUpRows), UBound(brokenUpCols)) As Variant
End If
For counter2 = 0 To UBound(brokenUpCols)
cleanedUpArray(counter, counter2) = brokenUpCols(counter2)
Next
Next
convertJsonToVariantArray = cleanedUpArray
End Function
Però sono onesto, non so come amalgamarlo nel mio codice scritto all'epoca...ecco perchè ho chiesto aiuto.