Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ciao a tutti,
devo leggere un file . csv che è su un sito e scaricarlo sul mio pc. Fin qui tutto bene.
Il problema nasce dal fatto che , mentre se carico questo file all'interno di Excel è giustamente tagliato al termine di ogni riga, se lo leggo tramite il Line Input del Visual Basic mi legge il file per intero e non per riga.
Faccio un esempio:
In Excel il file mi viene letto cosi':
Posta il codice che hai usato per leggere il file.
Se l' hai aperto in modalita testuale, i fine riga non vengono riportati.
Codice sorgente - presumibilmente Delphi
IFN1 = FreeFile()
Open App.Path & "\strsource.txt" For Input As #IFN1
gc = 0
WhileNotEOF(IFN1)
Line Input #IFN1, Temp
If Mid$(Temp, 1, 8) <> "EVENT_ID" Then
gc = gc +1
gare_cav(gc)= Temp
stat_range = Split(Temp, ",")'per ogni riga (cavallo) la scompongo
For X = 0 To UBound(stat_range()) - 1
single_horse(gc, X) = stat_range(X) ' ogni singola informazione la metto in un array
Next X
EndIf
Wend
Close #IFN1
Il codice apre il file ed incomincia a leggere una riga per volta. Al termine di ogni lettura suddivide la riga in valori delimitati da una virgola e li inserisce in un array.
Mi correggo!! Il file viene letto rogolarmente ma quando si lancia lo Split , questo non divide niente vedendo come vbCrLf soltanto quello di fine file.
In pratica non effettua la divisione delle righe.
In sRows(0) c'è tutto il file completo (Ne riporto solo una parte).
Il problema è dato perchè nel tuo file non è stato utilizzato il separatore di righe standard che è la coppia CR+LF, vbCrLf.
In sua vece, è stato usato solo il carattere LF (LineFeed), per cui devi usare come separatore di riga il carattere vbLf, ecco perchè la Line Input non funziona.
Usa il mio codice, ma sostituisci vbCrLf con vbLf.
Per verificare il tutto, dopo aver caricato l'array sRows(), esegui questo codice:
Codice sorgente - presumibilmente Visual Basic 6
For i = 0 To UBound(sRows)
Debug.Print sRows(i)
Next i
vedrai che conterrà le righe correttamente.
Ora potrai eseguire la tua elaborazione in base alle tue necessità.