# Bestimmte Zeilen aus Quelltext auslesen



## Sniperdennis (31. Dezember 2007)

Hallo,
undzwar wollte ich wissen wie man bestimmte Zeilen aus einem Quelltext in eine Textbox hieneinbekommt. Ich hab mit hilfe eines anderen geschafft den ganzen Quelltext ausulesen doch mit einzelnen Zeilen konnte er mir nicht weiter helfen.
Bis jetzt sieht alles so aus:

```
Dim SiteHTML As String 
Inet1.Cancel 
Inet1.Protocol = icHTTP 
Inet1.AccessType = icDirect 
SiteHTML = Inet1.OpenURL(Trim$("http://beispiel.de"), icString) 
Text1Text = SiteHTML
```

Das "Internet Transfer Control" hab ich auch benutzt.
Ich hoffe ich könnt mir weiter helfen. Wenn es möglich währe ist ein Printbutton auch gut angebracht.
Z.b. sehen zwei Zeilen so aus

Der Text1 <br /> 
Der Text2 <br /> 

Wie bekommt man dan noch das <br /> weg?
Danke im Vorraus.

MfG Sniperdennis


----------



## Ein_Freund (1. Januar 2008)

Willkommen im Forum!

Wenn ich das richtig verstanden habe, möchtest Du aus einem HTML-Quelltext die HTML-Tags entfernen. Dazu kannst Du entweder die Replace()-Funktion oder Reguläre Ausdrücke verwenden.

Gruß


----------



## Sniperdennis (1. Januar 2008)

Also ich habs jetzt irgendwie geschafft doch die HTML-Tags sind noch dahinter ich hab gehört das man es so machen kann 
	
	
	



```
sTeilstring = Mid(sGesamtstring, 5, 11)
```
 habe aber keine Ahnung wie es geht, ich wer euch dankbar wenn ihr mir weiterhelfen könnt.

Das sieht bis jetzt so aus:

```
Private Sub Command1_Click()
Dim SiteHTML As String
Inet1.Cancel
Inet1.Protocol = icHTTP
Inet1.AccessType = icDirect
SiteHTML = Inet1.OpenURL(Trim$("http://beispiel.de"), icString)
Text1.Text = SiteHTML
End Sub

Private Sub Command2_Click()
Dim Datei As String
    Dim NR As Integer
    
    Datei = App.Path
    If Right$(Datei, 1) <> "\" Then
        Datei = Datei & "\"
    End If
    Datei = Datei & "Code.txt"
    
    NR = FreeFile
    Open Datei For Output As #NR
        Print #NR, Text1.Text
    Close #NR
End Sub

' Lesen einer bestimmten Zeile einer Textdatei
' sFilename:  vollständiger Dateiname
' LineToRead: Zeile, deren Inhalt zurückgegeben werden soll
' =========================================================
Public Function txt_ReadLine(ByVal sFilename As String, _
  ByVal LineToRead As Long) As String

  Dim F As Integer
  Dim sLine As String
  Dim lRow As Long

  lRow = 0
  ' Existiert die Datei ?
  If Dir$(sFilename) <> "" Then
  
    ' Datei zum Lesen öffnen
    F = FreeFile
    Open sFilename For Input As #F
    
    ' Solange einlesen, bis entweder Dateiende
    ' oder gewünschte Zeilennummer erreicht
    While Not EOF(F) And lRow < LineToRead
      lRow = lRow + 1
      Line Input #F, sLine
    Wend
    Close #F
  End If
  
  ' Dateiende wurde frühzeitig erreicht,
  ' oder Datei war nicht vorhanden
  If lRow < LineToRead Then _
    sLine = ""

  txt_ReadLine = sLine
End Function

Private Sub Command3_Click()
Text2.Text = txt_ReadLine("Code.txt", 628)
Text3.Text = txt_ReadLine("Code.txt", 629)
End Sub
```


----------



## chmee (1. Januar 2008)

Habe mir Deinen Gesamtsource nicht angeschaut,

aber per Replace ( StrText.replace("</br>","") ) ginge es, und wie schon
gesagt wurde, per *regular Expressions* (RegEx).

mfg chmee


----------



## Sniperdennis (1. Januar 2008)

Sorry, ich bin in sowas nicht gut ich bekomm das nicht hin. Könnte einer von euch das in den Source einfügen?


----------



## Ein_Freund (1. Januar 2008)

Hallo,

also mit einer gewissen Bereitschaft, nach Informationen zu suchen, könnte man sich die _Replace()-Funktion_ auch selbst anlesen.

Das grössere Problem an der Sache ist, dass es eben eine ziemlich lange Liste an HTML-Tags gibt, die Du alle abhandeln müsstest. Wenn Du jedoch ausschliessen kannst, dass sich im Content des Quelltextes eckige Klammern befinden, ist die Anwendung von _Regulären Ausdrücken_ zu empfehlen.

Gruß


----------



## Sniperdennis (2. Januar 2008)

Jo ist ja jetzt alles schön und gut aber warum ist das falsch?

```
Dim Text1, Text2, Text3, Vergleich
    Text1 = Text2.Text
    Text2 = "<br />"
    Text3 = " "
 
    Vergleich = Replace(Text1, Text2, Text3)
    Text2.Text Vergleich
```

Der soll den Text1 aus der Textbox2 nehmen und das <br /> durch ein lehrzeichen ersetzen und es danach in der Textbox2 anzeigen lassen. Nur hier bekomm ich ein fehler 
	
	
	



```
Text1 = Text2.Text
```
 was ist daran falsch? Hier ebenfalls 
	
	
	



```
Text2.Text Vergleich
```
.


----------



## Ein_Freund (2. Januar 2008)

Hallo,

sowas kommt von sowas - könnte man sagen...

Du hast ein Steuerelement mit dem Namen _Text1_ und eine lokale Variable namens _Text1_ (was eine gruselige Programmierweise vieler Anfänger ist). Beim Programmstart stellt der Name _Text1_ eine Referenz auf das TextBox-Steuerelement dar. In dem Moment, in dem nun die lokale Variable _Text1_ angelegt wird, geht die Referenz auf das Steuerelement verloren. Und die Variable _Text1_ (in Deinem Fall als Variant) kennt die Eigenschaft _.Text_ natürlich nicht und deshalb kommt sowas wie "Objekt erforderlich".
Beim letzten Fehler fehlt schlicht das "=".

Im Übrigen noch eine grundsätzliche Anmerkung für weitere Fragen: Bitte nicht einfach nur schreiben "ich bekomme einen Fehler...", sondern auch den Fehler dazu posten.

Gruß


----------



## Sniperdennis (2. Januar 2008)

Also das klappt jetzt. Aber wenn ich jetzt bei Text2 und Textb mehrere Wörter hinmachen will kommt der Fehler: *Fehler beim Kompilieren:      Erwartet: Anweisungsende*


```
Dim Text1, Text2, Text3, Texta, Textb, Textc, Vergleich
    Text1 = Box1.Text
    Text2 = "<br />"  "inaktiv"
    Text3 = ""
    Texta = Box2.Text
    Textb = "<br />" "aktiv"
    Textc = ""
 
    Vergleich1 = Replace(Text1, Text2, Text3)
    Vergleich2 = Replace(Texta, Textb, Textc)
    Box1.Text = Vergleich1
    Box2.Text = Vergleich2
```


----------



## ojamaney (2. Januar 2008)

Vielleicht hilft Euch das hier weiter:


```
Option Explicit
'Einfügen
    Dim newText As String
    Dim newTextOben As String
    Dim newTextUnten As String

'AUSFILTERN :
    Dim txtDummy As String
    Dim nDummy As String
    Dim i As Long
    Dim j As Long
    
Private Sub Filtern()
'AUSFILTERN :
    
    txtDummy = Text1.Text
    nDummy = ""
    
    For i = 1 To Len(txtDummy)
        If Mid$(txtDummy, i, 1) = "<" Then
            For j = i + 1 To Len(txtDummy)
                If Mid$(txtDummy, j, 1) = ">" Then
                    Exit For
                Else
                    nDummy = nDummy & Mid$(txtDummy, j, 1)
                End If
            Next j
            Exit For
        End If
    Next i

'nDummy hat jetzt den gefilterten Text
    Call Einfügen
End Sub

Private Sub Einfügen()
'EINFÜGEN
    
    newText = Text2.Text
    newTextOben = ""
    newTextUnten = ""

    For i = 1 To Len(newText)
        If Mid$(newText, i, 1) = "<" Then
            newTextOben = Left$(newText, i - 1)
        ElseIf Mid$(newText, i, 1) = ">" Then
            For j = i + 1 To Len(newText)
                newTextUnten = newTextUnten & Mid$(newText, j, 1)
            Next j
            Exit For
        End If
    Next i
    
    Text2.Text = newTextOben & nDummy & newTextUnten
End Sub

Private Sub cmdFiltern_Click()
    Call Filtern
    cmdFiltern.Enabled = False
End Sub

Private Sub Form_Load()
    Text1.Text = "shdojshndh<gefilterter Text>shdodnsj"
    Text2.Text = "Hier kommt der gefilterte Text hin!"
End Sub
```


----------

