Novità

Curiosità archivio per LuigiB

Stato
Chiusa ad ulteriori risposte.
R

Roby

Guest
Ciao Luigi scusa la curiosità

ieri sera ho scaricato il file dalla lottomatica

storico.txt

ma noto che è aggiornato fino all'estrazione del 30/09/2010

adesso mi domando , come mai il programma aggiorna ugualmente fino all'ultima estrazione?

ti appoggi a qualche altro link?

grazie
 
L

LuigiB

Guest
ciao Morfeo , si il file che loro chiamano archivio è sempre qualche estrazione sotto , le ultime estrazioni le prendo direttamente dalle loro pagine html e non dal file dell'archivio completo
 

imported_n/a

Advanced Premium Member
si immaginavo

infatti cercavo di emulare su come hai fatto

solo ce non riesco

infatti con il componente msinet.ocx
catturo il codice html

e metto i vari numeri in delle text

pero' poi se cambio giorno di estrazione

i numeri non hanno piu la stessa posizione

capito che intendo?
 
L

LuigiB

Guest
Ciao Morfeo , non ti consiglio di usare il componente inet , bensi le api di windows.
La logica che ti consiglio di seguire è questa :

1) costruire l'url valido che punta alla pagina lottomatica
2) salvare in locale la pagina html attraverso la funzione DownloadFile (che ti ho allegato)
3) fare il parsing della pagina html salvata in locale per leggere i numeri dell'estrazione
4) far tornare un array che contenga i numeri dell'estrazione corrente letta dal parsing della pagina html
5) usare l'array per alimentarei tuoi campi testo



Ora ti allego le funzioni necessarie per la dichiarazione delle funzioni utili per scaricare un file html
puntato da un url in locale.
Inserisci nel tuo progetto un modulo e incolla quello che ti ho postato.

L'url da costruire per accedere alla pagina lottomatica è composto da
un indirizzo base e un parametro che poi è la data.
E si presenta cosi :

sUrlBase = "http://www.lottomaticaitalia.it/lotto/estrazioni/estrazioni_dettaglio.do?dataConcorso=" & "2009-11-19"

Quindi prima costruisci l'url in base alal data che vuoi e poi lo scarichi
in locale per leggerlo.

Puoi farlo con la funzione che ti ho allegato che si usa cosi

Codice:
        If DownloadFile(sUrl , "c:\Estrazione.html", "") Then
		' qui va lanciata la procedura che legge il file scaricato in locale
		' e fa tornare un array con i numeri delle estrazioni 
		
		' call LeggiEstrazione (aRetNumeri()) ' una funzione tipo questa dove aRetNumeri() potrebbe essere dichiarto con  Redim aRetNumeri(1 to 11 , 1 to 5) as integer

        End If

Per aprire un file e leggerlo si usano le funzioni di input output , non so se sai gia usarle
se no chiedi pure , non sono complicate.




Codice:
' DA INSERIRE NEL MODULO BAS 
' *** download from url
'*********************************************

Private Declare Function IsValidURL Lib "URLMON.DLL" (ByVal pbc As Long, ByVal szURL As String, ByVal dwReserved As Long) As Long

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long


Function DownloadFile(URL As String, LocalFilename As String, sRetErr As String) As Boolean
    Dim lngRetVal As Long
    If IsGoodURL(URL) Then
        lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
        If lngRetVal = 0 Then
            DownloadFile = True
        Else
            sRetErr = "Errore " & lngRetVal
        End If
    Else
        sRetErr = "Indirizzo non valido"
    End If
End Function


Function IsGoodURL(ByVal sUrl As String) As Boolean
    'The IsValidURL always expects a UNICODE string, but whenever
    'VB calls an API function, it converts the strings to ANSI strings.
    'That's why we're going to use a trick here. Before calling the function,
    'We're going to convert the unicode string to unicode so we get a double
    'unicode string.
    'Before VB calls the API function, it converts our double unicode string
    'to a normal unicode string; exactely what IsValidURL is expecting.
    sUrl = StrConv(sUrl, vbUnicode)
    'Now call the function
    IsGoodURL = (IsValidURL(ByVal 0&, sUrl, 0) = 0)
End Function
 

imported_n/a

Advanced Premium Member
Ciao Luigi

mamma mia

grazie molte della risposta
ho fatto come hai detto in modo esatto

ho creato un form1
ho messo un
Private Sub Command1_Click()
Call DownloadFile
End Sub

ma qui mi da già errore, se clicco mi da errore
errore di compilazione : argomento non facoltativo

sicuramente perchè questa riga di codice :
sUrlBase = "http://www.lottomaticaitalia.it/lotto/estrazioni/estrazioni_dettaglio.do?dataConcorso=" & "2009-11-19"



non l'ho messa al posto giusto
si trova nel modulo con tutto il resto di codice che mi hai dato
esattamente qui :

Function IsGoodURL(ByVal sUrl As String) As Boolean
sUrlBase = "http://www.lottomaticaitalia.it/lotto/estrazioni/estrazioni_dettaglio.do?dataConcorso=" & "2009-11-19"
sUrl = StrConv(sUrl, vbUnicode)
IsGoodURL
 
L

LuigiB

Guest
Ciao Morfeo , allora ti da quell'errore perche la funzione DownloadFile
ha questo prototipo :

DownloadFile (sUrl , sFileLocale , sRetErr)

tu hai lanciato la funzione ma non gli hai passato i parametri.

dovresti fare cosi :

Codice:
Private Sub Command1_Click()
   dim sUrlBase as string 
   dim sFileLocale as string 
   dim sRetErr as string 

   sUrlBase = "http://www.lottomaticaitalia.it/lotto/estrazioni/estrazioni_dettaglio.do?dataConcorso=" & "2009-11-19"

   sFileLocale = "c:\Estrazione.html"

   if DownloadFile  (sUrlBase , sFileLocale , sRetErr) = false then
        msgbox sRetErr
   end if 
End Sub


in questo modo scarichi il file relativo all'estrazione del 19/11/2009
in locale , poi dovrai aprire questo file per fare il parsing
te lo spiego questa sera quando torno a casa.

Non ho la tua mail mi sa ...
Ciao !
 
L

LuigiB

Guest
aspetta , ho modificato il codice c'era un errore , ricopialo ora e ricopia pure la riba che dovevi mettere nel modulo , perche non so se magari l'ahi modificata poi fai confusione.
 

imported_n/a

Advanced Premium Member
Grazie LuigiB ( pubblicamente )


per il materiale di didattica di vb6

ho capito il meccanismo del funzionamento

sto riscrivendo il tutto, cosi mi resta impresso nellaa memoria
:)

ulteriore domanda

se ad esempio adesso il file storico.txt è alla data del 30/09/2010


dovrebbe in teoria scaricare 3 file HTML delle tre date successive

quindi il funzionamento dovrebbe essere cosi :

SE ultima data file storico minore della data odierna (Date)

data file di testo . value = data file di testo . value + 1

quindi qui cerca di scaricare il file html di giorno 01/10/2010

se il file esiste lo scarica ed aggiunge l'estrazione
altrimenti
incrementa ancora il value di + 1
quindi 02/10/2010
a questo punto
il file html esiste
lo scarica ed aggiunge estrazione

e ripete il ciclo fino alla data odierna


in questo caso inserisce tre estrazioni
del 2-5-7 ottobre

dimmi se la meccanica di come è il funzionamento è giusta

come faccio a dire che il file html esiste?



grazie
 
Stato
Chiusa ad ulteriori risposte.

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 07 maggio 2024
    Bari
    68
    80
    23
    56
    71
    Cagliari
    43
    74
    20
    02
    11
    Firenze
    75
    19
    18
    74
    69
    Genova
    45
    38
    26
    16
    87
    Milano
    06
    23
    72
    66
    05
    Napoli
    46
    21
    49
    80
    73
    Palermo
    15
    09
    54
    48
    49
    Roma
    06
    58
    78
    27
    31
    Torino
    78
    27
    31
    64
    74
    Venezia
    60
    47
    90
    06
    22
    Nazionale
    43
    58
    26
    18
    79
    Estrazione Simbolotto
    Milano
    17
    16
    25
    23
    43

Ultimi Messaggi

Alto