Je hebt 2 driehoek-haakjes verkeerd om staan volgens mij. Je moet dan ook nog even kijken hoe het zit met de spaties rond die tekens. (Nr 91 en 92 als ik goed geteld heb

)
Kijk er nog even goed naar, dan zou het volgens mij moeten werken.
MartinJM
[edit]
Het is denk ik toch niet het bovenstaande. Op de site die ik gebruik, heeft ieder bedrijf een eigen pagina. Dan moet je dus de goede pagina openen en die pagina dan goed splitten. Hier ging het een stukje moeilijker dan bij het overzicht. Maar ik heb weer een voorbeeldje: Deze keer maakt het gebruik van een listbox en een combobox.
[/edit]
[CPP]Imports System.Net
Imports System.Threading
Public Class Form1
Private ThrGegevensOphalen As New Thread(AddressOf GegevensOphalen)
Private Delegate Sub DelegateInvokeListbox(ByVal Text As String)
Private AandeelNaam As String = Nothing
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If ThrGegevensOphalen.IsAlive Then
ThrGegevensOphalen.Abort()
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim WClient As New WebClient
Dim HTML As String = WClient.DownloadString("http://www.belegger.nl/koersen-AEX.index")
Dim HTMLAr() As String = HTML.Split(vbLf)
ComboBox1.Items.Add("Overzicht")
For i As Integer = 0 To HTMLAr.Count - 1 Step 1
If HTMLAr(i) Like "*<td class=""title""><a href=""*""><div source=""lightstreamer"" item=""*"" field=""name"" table=""main"">*" Then
Dim HTMLOk As String = HTMLAr(i)
Dim NaamEerst As Integer = HTMLOk.IndexOf("table=""main"">") + ("table=""main"">").Count
Dim NaamLaatst As Integer = HTMLOk.IndexOf("</div>")
Dim Naam As String = HTMLOk.Substring(NaamEerst, NaamLaatst - NaamEerst)
ComboBox1.Items.Add(Naam)
End If
Next
ComboBox1.SelectedItem = "Overzicht"
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
If ThrGegevensOphalen.IsAlive Then
ThrGegevensOphalen.Abort()
End If
ListBox1.Items.Clear()
If Not ComboBox1.Text = "Overzicht" Then
AandeelNaam = ComboBox1.Text
Else
AandeelNaam = Nothing
End If
ThrGegevensOphalen = New Thread(AddressOf GegevensOphalen)
ThrGegevensOphalen.Start()
End Sub
Private Sub GegevensOphalen()
If AandeelNaam = Nothing Then
OverzichtOphalen()
Else
AandeelOphalen()
End If
End Sub
Private Sub OverzichtOphalen()
Dim Teller As Integer = 0
Do
Dim WClient As New WebClient
Dim HTML As String = WClient.DownloadString("http://www.belegger.nl/koersen-AEX.index")
Dim HTMLAr() As String = HTML.Split(vbLf)
For i As Integer = 0 To HTMLAr.Count - 1 Step 1
If HTMLAr(i) Like "*<td class=""title""><a href=""*""><div source=""lightstreamer"" item=""*"" field=""name"" table=""main"">*" Then
Dim HTMLOk As String = HTMLAr(i)
Dim NaamEerst As Integer = HTMLOk.IndexOf("table=""main"">") + ("table=""main"">").Count
Dim NaamLaatst As Integer = HTMLOk.IndexOf("</div>")
Dim Naam As String = HTMLOk.Substring(NaamEerst, NaamLaatst - NaamEerst)
InvokeListbox(Naam & ":")
ElseIf HTMLAr(i) Like "*<td><div source=""lightstreamer"" item=""*"" field=""pctchange"" table=""main""*" Then
Dim HTMLOk As String = HTMLAr(i)
Dim PercentageLaatst As Integer = HTMLOk.IndexOf("</div>")
Dim Percentage As String = HTMLOk.Substring(PercentageLaatst - 6, 6)
InvokeListbox(Percentage)
End If
Next
Thread.Sleep(1000)
InvokeClearListbox()
Loop
End Sub
Private Sub AandeelOphalen()
Dim Teller As Integer = 0
Do
Dim WClient As New WebClient
Dim HTML As String = WClient.DownloadString("http://www.belegger.nl/aandeel-" & AandeelNaam & ".koersen")
Dim HTMLAr() As String = HTML.Split(vbLf)
For i As Integer = 0 To HTMLAr.Count - 1 Step 1
If HTMLAr(i) Like "*<span class='pos' source=""lightstreamer"" table=""main"" item=""1"" field=""pctchange"">*" Then
Dim Percentage As String = HTMLAr(i + 1) & HTMLAr(i + 2)
Percentage = Percentage.Replace(" ", "")
InvokeListbox(AandeelNaam & ":")
InvokeListbox(Percentage)
End If
Next
Thread.Sleep(1000)
InvokeClearListbox()
Loop
End Sub
Private Sub InvokeListbox(ByVal Text As String)
If InvokeRequired Then
Dim d As New DelegateInvokeListbox(AddressOf InvokeListbox)
Me.Invoke(d, New Object() {Text})
Else
ListBox1.Items.Add(Text)
End If
End Sub
Private Sub InvokeClearListbox()
If InvokeRequired Then
Me.Invoke(New MethodInvoker(AddressOf InvokeClearListbox))
Else
ListBox1.Items.Clear()
End If
End Sub
End Class[/CPP]
[edit]
Ben er net achter gekomen dat dit toch ook niet helemaal werkt. Ik ga nu kijken waarom.
Het bleek niet goed te gaan met negatieve percentages omdat die anders worden weergegeven door de site. Daarom heb ik de AandeelOphalen sub een beetje aangepast naar dit. De rest blijft hetzelfde:
[/edit]
[CPP] Private Sub AandeelOphalen()
Dim Teller As Integer = 0
Do
Dim WClient As New WebClient
Dim HTML As String = WClient.DownloadString("http://www.belegger.nl/aandeel-" & AandeelNaam & ".koersen")
Dim HTMLAr() As String = HTML.Split(vbLf)
For i As Integer = 0 To HTMLAr.Count - 1 Step 1
If HTMLAr(i) Like "*<span class='???' source=""lightstreamer"" table=""main"" item=""1"" field=""pctchange"">*" Then
Dim Percentage As String = HTMLAr(i + 1) & HTMLAr(i + 2)
Percentage = Percentage.Replace(" ", "")
If Percentage.EndsWith("</span>") Then
Percentage = Percentage.Remove(Percentage.Length - 7, 7)
End If
InvokeListbox(AandeelNaam & ":")
InvokeListbox(Percentage)
End If
Next
Thread.Sleep(1000)
InvokeClearListbox()
Loop
End Sub[/CPP]