Ciao ragazzi una domanda:
Ho creato un piccolo programma che, data una variabile inserita dall'utente, scarica un determinato file.
il dodice è questo
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?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
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![]()


Rispondi quotando
