1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.
  2. Informação: Pela 0:30 desta Sexta-feira (9 de Dezembro, 23:30 de Quinta-feira nos Açores) o Fórum e restantes sites da ZWAME vão estar offline para manutenção durante cerca de 1h30.
    Se necessário faremos actualizações via Twitter e Facebook.
    Remover anúncio

Selecionar texto em VB

Discussão em 'Programação' iniciada por Pestrela, 17 de Abril de 2008. (Respostas: 19; Visualizações: 2372)

  1. Boas

    Tou a fazer um programa e precisava d ajuda

    O meu programa funciona cmo browser e vai a kkr pagina da net e retira-lhe o codigo htlm todo para uma textbox.

    Gostava de saber cmo fazer para que apenas aparecesse na text box as linhas d codigo que comecem por "<a href>"

    :cool:
     
  2. Armadillo

    Armadillo Folding Member

  3. jpaulino

    jpaulino Power Member

    Dá lá um exemplo do texto que vais buscar e como vais buscar.
     
  4. o texto e obtido da seguinte forma

    Private Sub ir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ir.Click

    browser.Navigate(url.Text)

    End Sub


    Private Sub browser_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
    urltxt.Text = browser.DocumentText
    End Sub

    que me vai mostrar o codigo html da pagina numa textbox


    O que eu queria era que em vex de aparecer o codigo html todo, apenas fosse mostrado os tags html "<a href>" e o seu conteudo.
     
  5. Armadillo

    Armadillo Folding Member

    isto é mais vb6 mas da para perceber a ideia ;)
    faz assim:

    Código:
    dim ...
    '...
    
    Dim html As String, tempHtml As String
    Dim posIni As Variant, posFim As Variant
    
    
    html = browser.documentText
    tempHtml = ""
    
    
    posIni = InStr(html, "<a href>")
    posFim = InStr(html, "</a>")
    
    While posIni <> 0
        posIni = InStr(posIni, html, "<a href>", 1)
        posFim = InStr(posIni, html, "</a>", 1)
    
        tempHtml = tempHtml & Mid(html, posIni, posFim - posIni)
    
    Wend
    
    Me.Text2.Text = tempHtml
    
    '...
    
    atençao que nao testei e o maisprovavel é ter um bug qualquer. :D

    edit: ta cheio de bugs
    edit2: tem um loop infinito hehehe :D
     
    Última edição: 17 de Abril de 2008
  6. jpaulino

    jpaulino Power Member

    ou seja entre "<a href" e "</a>" é isso ?

    Só mais uma coisa tem caracteres especiais correcto ?
     
    Última edição pelo moderador: 22 de Abril de 2008

  7. Exacto entre <a href> e </a>

    Caracteres especiais é indiferente ;)
     

  8. Eu sou mm verde na programação em VB ainda :(

    Será que m podias dar sugestoes para alterar o ciclo infinito?
     
  9. posIni = InStr(posIni, htmla, "<a href>", 1)


    N passa daki :1361:
     
  10. jpaulino

    jpaulino Power Member

    Olá, podes colocar aqui um exemplo de texto (só para testar +/-) ?
     
  11. jpaulino

    jpaulino Power Member

    Bem não tendo algo para testar aqui vai uma ideia

    Código:
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim str As String = "isto é um teste <a href='vbtuga'>vbtuga.blogspot.com</a> isto " + _
            "é um segundo teste<a href='techzonept'>http://www.techzonept.com/</a>fim do teste ." + _
            "isto é um teste <a href='vbtuga'>vbtuga.blogspot.com</a> isto é um segundo " + _
            " teste<a href='techzonept'>http://www.techzonept.com/</a>fim do teste"
            Dim lastPosition As Integer
            ' Check the textbox information
            Dim findPrefix As String = "<a href="
            Dim findSufix As String = "</a>"
            Try
                Do
                    ' Find the sufix in the line
                    If str.Substring(lastPosition).Contains(findPrefix) Then
                        ' Collects the end position
                        Dim posStart As Integer = str.IndexOf(findPrefix, lastPosition) + findPrefix.Length
                        ' Breaks the str for prefix search
                        Dim strFound As String = str.Substring(posStart + findPrefix.Length)
                        If strFound.Contains(findSufix) Then
                            ' Collects the end position
                            Dim posEnd As Int16 = strFound.IndexOf(findSufix) + findSufix.Length
                            ' Collects the tag
                            Dim tagname As String = str.Substring(posStart, posEnd + findSufix.Length).ToString
                            lastPosition = (posStart + posEnd)
                            Debug.WriteLine(tagname)
                        Else
                            Exit Do
                        End If
                    Else
                        Exit Do
                    End If
                Loop
            Catch ex As Exception
            End Try
        End Sub
    
     
  12. n existe um texto especifico

    o codigo pode ser retirado de kkr pagina por exemplo.. Eu tenho um botão e uma textbox que servem para usar o browser

    Depois quando o brower carrega a pagina tenho uma linha de codigo que mostra o codigo fonte da pagina numa textbox


    O que pretendo é que ao invés de aparecer o codigo fonte todo, só fosse mostrado o que estivesse nas tags "<a href = "www.sitequalquer.qualquercoisa">CENAS ESCRITAS</a>"
     
  13. jpaulino

    jpaulino Power Member

    E já viste o exemplo que mostrei ... ? (pelo que vejo é só fazer umas pequenas adaptações)
     


  14. Só mostra o ultimo <a href="..">..</a> :D


    Sim ja exprimentei. Muito obrigado :D

    Vou tentar fazer as modificações com os meus "grandes conhecimentos" na matéria :p

    a alteração que fix foi a seguinte

    Código:
    Dim str As String = browser.DocumentText
    De kkr das formas o meu unico problema neste exemplo é o facto de so aparecer a ultima tag :(
     
    Última edição pelo moderador: 23 de Abril de 2008
  15. jpaulino

    jpaulino Power Member

    Testaste o meu exemplo ? Experimenta alterar Debug.WriteLine(tagname) para MessageBox.Show(tagname) e diz-me se aparece só a ultima tag.
     
  16. Dessa forma aparecem msgboxes sem fim :p

    O meu objectivo era que as tags aparecessem numa textbox mas s puser

    Código:
    textbox1.text=tagname
    apenas aparece a ultima tag :(
     
  17. jpaulino

    jpaulino Power Member

    A mensagem era só para veres, se quiseres colocar numa textbox podes fazer:

    Código:
    [SIZE=2][COLOR=#0000ff][COLOR=white]me[/COLOR][/COLOR][/SIZE][SIZE=2][COLOR=white].TextBox1.AppendText(tagname)[/COLOR]
    [/SIZE]
    Não te esqueças do multiline a da scrollbar.

    Aparece a ultima porque em cada uma que encontras escreves na textbox. A ultima vez que escreves é que fica visível. Tens de usar o AppendText.
     
    Última edição pelo moderador: 24 de Abril de 2008

  18. muito obrigado ja está a funcionar xD

    Ag so m falta limpar o que esta a mais nesta selecçao xD
     
  19. jpaulino

    jpaulino Power Member

    Ok, se tiveres problemas diz qq coisa.
     

Partilhar esta Página