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