Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [VB6] Download file + gesione file

    Ciao ragazzi una domanda:

    Ho creato un piccolo programma che, data una variabile inserita dall'utente, scarica un determinato file.

    il dodice è questo

    codice:
    Dim m_strHttpResponse As String
    Dim m_lDownloadedBytes  As Long
    Dim m_bHeaderReceived  As Boolean
    Dim m_lContentLength  As Long
    Dim m_bResponseReceived As Boolean
    Dim RemotePer As String
    Dim LocalPer As String
    Dim Host As String
    
    Private Sub Command1_Click()
    codicetitolo = Text1.Text
    Download
    End Sub
    
    Private Sub Form_Load()
    Dim codicetitolo As String
    End Sub
    
    Private Sub Winsock1_Connect()
       Dim strHttpRequest As String
       strHttpRequest = "GET " & RemotePer & " HTTP/1.1" & vbCrLf
       strHttpRequest = strHttpRequest & _
                        "Host: " & Host & vbCrLf
       strHttpRequest = strHttpRequest & "Accept: */*" & vbCrLf
       strHttpRequest = strHttpRequest & "Connection: close" & vbCrLf
       strHttpRequest = strHttpRequest & vbCrLf
       Winsock1.SendData strHttpRequest
       Open LocalPer For Binary As #2
    End Sub
    
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
       '
       On Error Resume Next
       '
       Dim intBreakPosition As Integer   'blank line start position
       Dim vHeaders As Variant   'array of the HTTP headers returned by the Split function
       Dim vHeader As Variant   'this var is used in the For Each...Next loop
       Dim strData As String
       '
       'retrieve arrived data from winsock buffer
       '
       Winsock1.GetData strData
       '
       'store the data in the m_strHttpResponse variable
       If (m_bHeaderReceived = True) Then
            m_strHttpResponse = ""
       End If
       m_strHttpResponse = m_strHttpResponse & strData
       m_lDownloadedBytes = m_lDownloadedBytes + bytesTotal
       
       If Not m_bHeaderReceived Then
          'the HTTP headers is not arrived yet
          'look for blank line (= vbCrlf & vbCrLf)
          intBreakePosition = InStr(1, m_strHttpResponse, vbCrLf & vbCrLf)
          If intBreakePosition Then
             'the blank line is found, turn off the m_bHeaderReceived flag
             m_bHeaderReceived = True
             m_lDownloadedBytes = m_lDownloadedBytes - intBreakePosition - 3
             'split the headers into array vHeaders
             vHeaders = Split(Left(m_strHttpResponse, intBreakePosition - 1), vbCrLf)
             'look for the Content-Length header
             For Each vHeader In vHeaders
                If InStr(1, vHeader, "Content-Length") Then
                   'the headers is found, store its value in the m_lContentLength variable
                   m_lContentLength = CLng(Mid(vHeader, InStr(1, vHeader, " ") + 1))
                   Exit For
                End If
             Next
            m_strHttpResponse = Mid(m_strHttpResponse, _
            InStr(1, m_strHttpResponse, _
            vbCrLf & vbCrLf) + 4)
            Put #2, , m_strHttpResponse
          End If
       Else
          If m_lContentLength > 0 Then
             Put #2, , m_strHttpResponse
          End If
       End If
    End Sub
    
    Private Sub Winsock1_Close()
    If Not m_bResponseReceived Then
            Close #2
            
          m_bResponseReceived = True
    End If
     Winsock1.Close
    End Sub
    
    
    Sub Download()
    Resetta
    RemotePer = "/d/quotes.csv?s=" + codicetitolo + "&f=sl1d1t1c1ohgv&e=.csv" 'path dopo il nome di dominio'
    LocalPer = "C:\valoriazione.csv" 'dove salvare il file'
    Winsock1.Connect Host, 80
    While Winsock1.State <> 0
        DoEvents
    Wend
    End Sub
    
    Private Sub Resetta()
    Host = "it.old.finance.yahoo.com" 'nome di dominio'
    m_strHttpResponse = ""
    m_bResponseReceived = False
    m_bHeaderReceived = False
    m_lDownloadedBytes = 0
    End Sub
    solo che non mi funziona e non riesco a capire il perchè.... se gli faccio scaricare dandogli il percorso staticamente lo fa alla perfezione. Come posso risolvere questo problema?


    altra domanda: Una volta scaricato.... il file è composto da una semplice riga. Cosa posso usare per mettere la riga in un array e "baipassarla" per dividermi i campi a modo mio?


    Grazie per le risposte
    Stefano Fratepietro - Debian and Ubuntu Linux supporter
    My personal casa pagina

  2. #2
    primo punto risolto....


    il secondo no. Nessuno mi aiuta?
    Stefano Fratepietro - Debian and Ubuntu Linux supporter
    My personal casa pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.