Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

Errore inspiegabile utilizzando Split

$
0
0

Salve a tutti, sto scrivendo un programma che mi consenta di caricare da web i dati storici della borsa italiana.
 Successivamente devo elaborare tali dati. Quindi una volta creati in automatico ogni file di tipo csv per ogni titolo, il programma legge ogni riga, la suddivide utilizzando split e popola una gridview.
Ho provato a scaricare manualmente dei file csv ed il programma funziona perfettamente.
Se invece cerco di caricare uno dei file csv creati in automatico, il programma si blocca segnalandomi questa eccezione: IndexOutOfRangeException.
Ho confrontato i file csv e hanno esattamente lo stesso formato. Non riesco assolutamente a capire come risolvere il problema.
Grazie

di seguito il codice:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim riga As String
Dim LaData As String
Dim Apertura As Single
Dim Massimo As Single
Dim Minimo As Single
Dim Chiusura As Single
Dim Volume As Integer
Dim partiriga(5) As String
Dim ValoreCP As Integer
Dim ValoreCM As Integer
Dim MaAp As Single
Dim MiAp As Single
Dim nometitolo As String
Dim partititolo(2) As String
Dim percorso As String
Dim intestazione As String
Dim a As Integer

leggi = IO.File.OpenText("C:\Borsa\"& partititolo(1) & ".csv")

While leggititolo.Peek <> -1
nometitolo = leggititolo.ReadLine
partititolo = Split(nometitolo, ";")
ListView1.Items.Add(nometitolo)
Label4.Text = nometitolo
leggititolo.Close()
leggi = IO.File.OpenText("C:\Borsa\"& partititolo(1) & ".csv")

intestazione = leggi.Reaadline

partiriga = Split(riga, ",")
LaData = partiriga(0)
Apertura = Val(partiriga(1))
Massimo = Val(partiriga(2))
Minimo = Val(partiriga(3))
Chiusura = Val(partiriga(4))
Volume = Val(partiriga(5))

'Calcolo del valore C
MaAp = (Massimo / Apertura - 1) * 100
MiAp = ((Minimo / Apertura - 1) * 100)
If MaAp > 1 And (1 - Minimo / Apertura) * 100 < 1 Then
   ValoreCP = ValoreCP + 1
End If
If MaAp < 1 And (1 - Minimo / Apertura) * 100 > 1 Then
   ValoreCM = ValoreCM + 1
End If

'inserisce i dati all'interno del datagridview1
DataGridView1.Rows.Add(LaData, Apertura, Massimo, Minimo, Chiusura, Volume, MaAp, MiAp, ValoreCP, ValoreCM)
End Wile

'inserisce i dati all'interno del datagridview2
DataGridView2.Rows.Add(nometitolo, DateTimePicker1.Value, DateTimePicker2.Value, ValoreCP, ValoreCM, (ValoreCP - ValoreCM))

Refresh()
ValoreCM = 0
ValoreCP = 0
End While

End Sub


Viewing all articles
Browse latest Browse all 2212