Vraag over een thread

Status
Niet open voor verdere reacties.

old Hippy

Gebruiker
Lid geworden
24 mei 2008
Berichten
911
Hallo allemaal
Ik heb een app waar info met een timer van internet wordt gehaald.
de timer haalt iedere sec de gegevens op.
Als ik nu mijn app met de muis op het scherm verplaats gaat dit met horten en stoten.
nu schakel ik de timer handmatig uit om het form netjes op mijn scherm te plaatsen.
Er worden meerdere forms gebruikt.

VRAAG kan je met een thread er voor zorgen dat je netjes je form kan verplaatsen zon der de timer te stoppen en weer te moeten starten?
Hopelijk ben ik duidelijk M v g Old Hippy
 
Als de timer de oorzaak is van de vertraging, mogelijk wel. Als het ophalen per seconde zelf de vertragende factor is dan zal ook het ophalen in een aparte thread je computer vertragen (teveel data). Als de timer elke 5 seconden de data ophaalt is het effect dan weg?

Voor dit soort werk is een thread wel vaak de beste oplossing. Het is jammer genoeg ook wat moeilijker om goed te implementeren :)
 
Hallo wampier

Bedankt voor je reactie
Met 5 sec is het form 5sec lang goed te verplaatsen.
Maar om de 5 sec is te lang voor mijn info.
in 5 sec kan een aandeel flink zakken. kan dus veel centen kosten Hi.

Dus een tread of multietread als dat kan zou een mooie oplossing zijn.
 
Waarom gebruik je geen thread om de informatie op te halen? Dan kan het slepen gewoon 'normaal' gaan.

Bijvoorbeeld zo:
[CPP]Imports System.Threading

Public Class Form1

Private ThrGegevensOphalen As New Thread(AddressOf GegevensOphalen)
Private Delegate Sub DelegateInvokeTextbox(ByVal Text)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ThrGegevensOphalen.Start()
End Sub

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
ThrGegevensOphalen.Abort()
End Sub

Private Sub GegevensOphalen()
Dim Teller As Integer = 0
Do
''//alle gegevens ophalen

Thread.Sleep(1000)
Loop
End Sub

Private Sub InvokeTextbox(ByVal Text As String)
If InvokeRequired Then
Dim d As New DelegateInvokeTextbox(AddressOf InvokeTextbox)
Me.Invoke(d, New Object() {Text})
Else
TextBox1.Text = Text
End If
End Sub
End Class
[/CPP]

Zorg wel dat je alles 'thread safe' maakt. Dat zie je in mijn voorbeeld, maar kan je anders hier vinden: http://msdn.microsoft.com/en-us/library/ms171728.aspx

Succes! :thumb:
MartinJM

PS: Zorg ook dat je de thread afsluit bij het sluiten van de form, anders blijft de thread doorgaan... Staat ook in het voorbeeld, maar ik zeg het er nog maar even bij.


[edit]
Je kan ook proberen dit te multithreaden, maar lijkt mij onhandig: http://en.kioskea.net/faq/19723-vb-net-move-a-form-or-picturebox-with-mouse
[/edit]
 
Laatst bewerkt:
Beste MartinJM

Dank voor je voorbeeld.
Ik ga hier mee stoeien en als ik vast loop of als het is gelukt hoor je van mij.
Groet Old Hippy
 
Hallo ik ben er even klaar mee kom er niet uit.
voorlopig zet ik de Timer wel hand matig uit en aan.

Bedank voor jullie hulp.

Groet Old Hippy
 
Hoi,

Ik heb nog een voorbeeldje gemaakt wat gebruik maakt van deze site: http://www.belegger.nl/koersen-AEX.index
[CPP]Imports System.Net
Imports System.Threading

Public Class Form1

Private ThrGegevensOphalen As New Thread(AddressOf GegevensOphalen)
Private Delegate Sub DelegateInvokeListbox(ByVal Text)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ThrGegevensOphalen.Start()
End Sub

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
ThrGegevensOphalen.Abort()
End Sub

Private Sub GegevensOphalen()
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 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]

Het is niet echt een nette code, maar het werkt wel. Het maakt gebruik van een WebClient om eerst de webpagina te laden. Die split ik dan om er lijn voor lijn doorheen te lopen. De goede lijntjes worden ook nog gesplit en dan naar de listbox-invoker gestuurd, die er dan voor zorgt dat ze in de listbox terecht komen.

Ik hoop dat het hierdoor makkelijker wordt om je eigen code te gaan multithreaden (je mag ook de bovenstaande code gebruiken). In het begin vond ik het ook moeilijk en gebruikte ik altijd dit lijntje bij het laden van de form:
[CPP]CheckForIllegalCrossThreadCalls = False[/CPP]
Maar dit is niet veilig in je programma. Daarom ben ik later nog eens gaan kijken naar hoe je beter kan multithreaden. Als je dat lijntje erin zet, kan je wel vanuit alle threads gelijk de controls aanroepen, waardoor je het hele 'invoke' gedoe niet meer nodig hebt.

Succes!
MartinJM
 
Ha MartinJM

Heel hartelijk dan voor he voorbeeld.
Ik ga hier toch nog eens mee verder.
Eens kijken of ik je code kan doorgronden.

Nog maal dank je hoort van mij.
 
Ha MartinJM

Ik ben dankzij je code alweer wat verder.
Maar wat ik zou willen is de gegevens per aandeel.
Ik heb een combobox met de aandelen B.V. AEX KPN ING ezv .

Maar kom er niet uit krijg een thread fout.

Had dit bedacht waarvan CB_Naam.text de combobox is

Code:
If HTMLAr(i) Like "*<td class=""title""><a href=""/aandeel-" & CB_Naam.Text & ".koersen"" <> ""div source=""lightstreamer"" item=""*"" field=""name"" table=""main"">*" Then

Maar dat gaat niet. ook bij item=""*"" lukt het mij niet met een NumericUpDown
 
Laatst bewerkt:
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 :p)

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]
 
Laatst bewerkt:
HI MartinJM

Te gek hier kom ik een heel eind mee.
Dank voor het vele werk met thread werken is nieuw voor mij.
veel dank Voor de hulp hier mee kan ik de materie beter doorgronden.
vind het altijd prettig om met een werkend voorbeeld te werken dan snap ik beter wat er gebeurd.

IK ga dit Aanpassen voor mijn App daar worden nog al wat berekeningen gemaakt geeft aan wanneer ik wil verkopen of kopen.
Veel dank Groet Old Hippy
 
Hi MartinJR

Even terug komen op het probleem
voor zover ik begrijp ga je met aandelenophalen naar de pagina van het aan deel.
dit snap ik
maar nu probeer ik ook de koers op te halen.

Code Die ik heb gemaakt werkt niet vermoedelijk om dat ik het niet van de goede plaats haal.
Of niet goed split kan je mij hier bij helpen.

Dit is de code die ik had bedacht.



Code:
 For i As Integer = 0 To HTMLAr.Count - 1 Step 1
                If HTMLAr(i) Like "*<span class='???' source=""lightstreamer"" table=""main"" item=""1"" field=""trade"">*" Then
                    Dim trade As String = HTMLAr(i + 1) & HTMLAr(i + 2)
                    Percentage = trade.Replace(" ", "")
                    If trade.EndsWith("</Div>") Then
                       Trade= Trade.Remove(Percentage.Length - 7, 7)
                    End If
                                       InvokeListbox(Trade)
                End If
            Next
 
Ik heb mijn computer nu niet bij me, maar je kan het beste even met en breakpoint de HTMLAr even bekijken en kijken of hetgeen na 'LIKE' echt klopt. Soms verschilt het van de html in de webbrowser.

MartinJM

[edit]
Je moet iedere keer opnieuw kijken hoe je het gaat splitten. Helaas is het hierbij ook niet perse handig om de oude codes over te nemen en aan te passen. Meestal is het makkelijker om gewoon opnieuw te kijken hoe je dan het beste kan splitten.

Hier is nog een voorbeeld:
[/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)

InvokeListbox(AandeelNaam & ":")

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(Percentage)
ElseIf HTMLAr(i) Like "*<div source=""lightstreamer"" table=""main"" item=""*"" field=""trade"">*" Then
Dim Koers As String = HTMLAr(i)
Koers = Koers.Remove(0, 80)
Koers = Koers.Remove(Koers.Count - 11, 11)
InvokeListbox(Koers)
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]
 
Laatst bewerkt:
Hallo MartinJM

De hele dag aan het zoeken geweest maar ik krijg het niet voor elkaar om het koers bedrag in AandeelOphalen() tevoorschijn te halen.
Wel in OverzichtOphalen() dat gaat goed ook het in een textbox zichtbaar maken.

Misschien wil je er nog even naar kijken??
Groet Old Hippy
 
Hoi,

Ik had de code er nog bij de vorige post erbij geplaatst. Het splitten van een webpagina is veel werk, maar het resultaat is er dan wel.
Er is ook nog een andere manier, maar die gebruik ik zelf nooit:
http://msdn.microsoft.com/en-us/library/system.windows.forms.htmlelement.aspx#code-snippet-2
http://www.vbforums.com/showthread.php?646095-Convert-html-string-to-HTMLDocument-for-parsing
Ik geloof dat het dan nog steeds lang duurt. Dat komt in beide gevallen omdat iedere webpagina verschilt. Daardoor moet je iedere keer weer kijken hoe je het het makkelijkst eruit kan filteren.

Het zou toch prettig zijn als daar een standaard voor zou komen :D

MartinJM
 
Hoi

Het blijkt inderdaad niet makkelijk ik heb geen idee hoe je het uit moet tellen.

Ik gebruik in mijn app. nummerUpdown om de positie te bepalen en dan de fout af te vangen bv als het een plus Of min wordt

ik gebruik deze code

Code:
 Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        Dim AanP As Integer
        Dim INGWV As Integer
        Dim INGKL As Integer
        Dim INGKR As Integer
        Dim Aandeel As String
        Dim hulp As String
        hulp = (IntegerInput3.Value)
        INGWV = (IntegerInput5.Value)
        INGKL = (IntegerInput6.Value)
        INGKR = (IntegerInput7.Value)
        Aandeel = TB_X1.Text
        AanP = (IntegerInput1.Value)
        Me.Text = Date.Now & "--(" & LabelX4.Text & ")"
        Try
            Dim HTML As String = New Net.WebClient().DownloadString("http://www.beursgorilla.nl/aex.asp")
            HTML = HTML.Replace("koers " & Aandeel, "$")
            HTML = HTML.Replace("%", "$")
            HTML = HTML.Split("$")(AanP)
            TB_Winst_Verlies.Text = VisualBasic.Right(HTML, INGWV)
            TB_Koers.Text = VisualBasic.Mid(HTML, INGKL, INGKR)
            TextBoxX2.Text = VisualBasic.Right(HTML, INGWV)
            LabelX1.Text = "Koers (" & Now.ToString("dd-MM-yyyy") & ")   " & TB_Koers.Text & " W/V "
            LabelX3.Text = TB_Winst_Verlies.Text & " %"
            RichTextBoxEx1.Text = (HTML)
            TextBoxX1.Text = VisualBasic.Right(HTML, IntegerInput3.Value)

            TB_Gekocht.BackColor = Color.Green
            TB_Gekocht.ForeColor = Color.White

        Catch ex As Exception
            ' MessageBox.Show(ex.ToString)
        End Try
        pasaan()
        'ínfo Dollar
        Dim HTML1 As String = New Net.WebClient().DownloadString("http://www.dollarkoers.nl/koersen/eur-usd/")
        HTML1 = HTML1.Replace("Bezig", "$")
        HTML1 = HTML1.Replace("koers:", "$")
        HTML1 = HTML1.Split("$")(1)
        LB_Dolar.Text = "Dollar: $ " & VisualBasic.Left("" + HTML1, 6)

    End Sub

    Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick
        Winst_verlies()
        Hoog_Laag()
        LabelX4.Text = Now.Minute
        Grafiekmaken()
    End Sub

In een timer dus
 
Hoi

Nog even een vraagje.
Dit is dus om de positie in de pagina te vinden als ik het goed begrijp. Koers = Koers.Remove(0, 80)

Hoe bepaal je ongeveer die 80 is daar een vuistregel voor??
 
80 staat voor de plaats waar de koers begint. De HTML is niet interessant voor de gebruiker, dus die haal je weg. Het is het makkelijkst om de betreffende regel in kladblok te plakken. Dan klik je op de plaats waar hetgeen staat wat je eruit wil halen. Onderaan in beeld staat dan op welke positie dat is. Daar moet je dan nog wel 1 vanaf halen geloof ik.

Ik reageer later nog een keer, als ik niet op mijn telefoon typ :p

MartinJM
 
Hi Martin
Ik heb het door Nogmaals heel vee dank.
Het is me nu ook met hoog en laag gelukt begrijp de code nu goed.

Dank Old Hippy
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan