Enter Zeichen in Datei

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Shitbyrd.

    Enter Zeichen in Datei

    Hallo liebe VB Community,

    habe hier nen Code geschrieben, der aus ner HTML Datei die verschiedenen Hyperlinks rausextrahiert und das ganze in einer beliebigen vom Benutzer festgelegten Datei in sauberer vom HTML Code befreiten Art speichert. Dabei soll in der Textdatei in jeder Zeile genau eine URL stehen. Dazu habe ich die verschiedenen URLs aus der HTML Datei zu einem String ausgabe zusammenkonkateniert und schreibe diesen in die Datei:

    VB.NET-Quellcode

    1. ausgabe &= Mid(search, pos1, length) & " " & Chr(13)


    Habe wie man sieht auch ganz am Ende immer ein Enter hinzugefügt (13 ist ASCII für Enter). Trotzdem stehen später in der Datei alle URLs hintereinander und nicht in verschiedenen Zeilen. Was mache ich falsch?

    Der vollständige Code (glaube nicht, dass sich den jemand durchguckt):

    Hallo liebe VB Community,

    habe hier nen Code geschrieben, der aus ner HTML Datei die verschiedenen Hyperlinks rausextrahiert und das ganze in einer beliebigen vom Benutzer festgelegten Datei in sauberer vom HTML Code befreiten Art speichert. Dabei soll in der Textdatei in jeder Zeile genau eine URL stehen. Dazu habe ich die verschiedenen URLs aus der HTML Datei zu einem String ausgabe zusammenkonkateniert und schreibe diesen in die Datei:

    VB.NET-Quellcode

    1. ausgabe &= Mid(search, pos1, length) & " " & Chr(13)


    Habe wie man sieht auch ganz am Ende immer ein Enter hinzugefügt (13 ist ASCII für Enter). Trotzdem stehen später in der Datei alle URLs hintereinander und nicht in verschiedenen Zeilen. Was mache ich falsch?

    Der vollständige Code (glaube nicht, dass sich den jemand durchguckt):

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim filename As String = TextBox1.Text
    3. Dim fds As Integer = FreeFile()
    4. Dim search As String = ""
    5. Dim filelength As Integer
    6. If System.IO.File.Exists(filename) Then
    7. FileOpen(fds, filename, OpenMode.Input) 'file desktriptor, Dateipfad und Modus
    8. filelength = LOF(fds) 'Länge ermitteln mit LOF
    9. search = InputString(fds, filelength) 'Ausgabe über TB2
    10. FileClose(fds)
    11. Else : MsgBox("Die Datei mit dem Namen " & filename & " existiert nicht.")
    12. End If
    13. Dim searchChar1 As Char = Chr(34) ' Chr(34)= "
    14. Dim searchChar2 As String = "HREF"
    15. Dim pos1 As Integer = 0
    16. Dim pos2 As Integer = 0
    17. Dim length As Integer = 0
    18. Dim firstURL As Integer = 0
    19. Dim ausgabe As String = ""
    20. While True
    21. pos1 = InStr(pos2 + 1, search, searchChar2, CompareMethod.Text) + 6
    22. If firstURL <> 0 Then
    23. If pos1 <= firstURL Then
    24. Exit While
    25. End If
    26. Else : firstURL = pos1
    27. End If
    28. pos2 = InStr(pos1 + 5, search, searchChar1, CompareMethod.Text)
    29. length = pos2 - pos1
    30. ListBox1.Items.Add(Mid(search, pos1, length))
    31. ausgabe &= Mid(search, pos1, length) & " " & Chr(13)
    32. Label3.Text = CStr(ListBox1.Items.Count) & " URLs wurden extrahiert"
    33. End While
    34. ' Schreibe URLs in Datei
    35. If TextBox2.Text.Count <> 0 Then
    36. Dim s_fds As Short = FreeFile()
    37. Dim s_filename As String = TextBox2.Text
    38. If System.IO.File.Exists(fds) Then : FileOpen(s_fds, s_filename, OpenMode.Append)
    39. Else : FileOpen(s_fds, s_filename, OpenMode.Output)
    40. End If
    41. PrintLine(s_fds, ausgabe)
    42. FileClose(s_fds)
    43. End If
    44. End Sub

    Shitbyrd schrieb:

    Chr(10) = Line Feed
    Chr(13) = Carriage Return

    du musst beide hintereinander hängen, um einen Zeilenumbruch zu generieren.
    Einfacher gehts mit vbnewline oder vbcrlf.


    Fast... Die Reihenfolge für das hintereinanderhängen ist Chr(13) & Chr(10), zu empfehlen ist aber tatsächlich eine der Konstanten dafür zu nehmen.

    Gruß,

    f0x
    Definiert ist es für Windows aber in der Reihenfolge Carriage Return Line Feed, daher heißt die Konstante auch CRLF. Probier mal ein wenig herum, manche Texteditoren akzeptieren (teilweise abhängig vom encoding) auch ein bloßes chr(10) und zeigenen einen Zeilenumbruch. Das ist übrigens genau die Definition eines Zeilenumbruchs in Linux. Auf dem Mac besteht er dagegen nur aus einem CR, also dem chr(13). Abhängig von der Toleranz ist da also vieles in möglich, aber für Windows ist es als Chr(13) & Chr(10) definiert.

    Gruß,

    f0x