Textdatei in 3 textboxs

  • VB.NET

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von guccini.

    Textdatei in 3 textboxs

    hallo zusammen.....habe eine text datei und möchte den inhalt zum editiren in drei textboxs...! die text datei fängt mit $1 dann $2 und endet mit $3

    z.B.:

    $1
    blabla
    .
    .
    .
    bla

    2$
    bla
    bla
    .
    .
    .bla

    3$
    blabla.
    .
    .
    .
    .



    hoffe kann jemand helfen..!!

    VB.NET-Quellcode

    1. Private Function GetText(ByVal path As String, ByVal between As Integer) As String
    2. Using sr As New StreamReader(path, Encoding.Default)
    3. Dim input As String() = sr.ReadToEnd.Split("$")
    4. Return input(between).Substring(1, input(between).Length - 2)
    5. End Using
    6. End Function


    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. MessageBox.Show(GetText("Pfad", 1)) '1 = Alles zwischen $1 und $2
    3. End Sub

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim input = GetText("Pfad", 1, 2, 3) 'Alle Abschnitte die zurückgegeben werden
    3. TextBox1.Text = input(0)
    4. TextBox2.Text = input(1)
    5. TextBox3.Text = input(2)
    6. End Sub
    7. Private Iterator Function GetText(ByVal path As String, ParamArray between As Integer()) As IEnumerable(Of String)
    8. Using sr As New StreamReader(path, Encoding.Default)
    9. Dim input As String() = sr.ReadToEnd.Split("$")
    10. For Each item In between
    11. Yield input(item).Substring(1, input(item).Length - 2)
    12. Next
    13. End Using
    14. End Function


    Hab die Funktion jetzt verändert, weil der obere Code wäre nicht so gut, weil man dann 3x die Datei neu einlesen müsste und jedesmal andere Stellen rausfiltert, anstatt, wie in diesem Code, einmal die Datei einzulesen und anschliessend die gewünschten Abschnitte zurückzugeben.
    @RushDen: Ist das nicht ein wenig umständlich, für jeden Teil die Datei neu zu öffnen?
    Ich würde Folgendes vorschlagen:

    VB.NET-Quellcode

    1. If Not File.Exists(path) Then Throw New ArgumentOutOfRangeException("path", "Datei existiert nicht")
    2. Dim Content = File.ReadAllText(path, Encoding.UTF8)
    3. If Not Regex.IsMatch(Content, "1\$.+?2\$.+?3\$", RegexOptions.Singleline) Then Return
    4. Dim PartA = Regex.Match(Content, "(?<=1\$).+?(?=2\$)", RegexOptions.Singleline).Value
    5. Dim PartB = Regex.Match(Content, "(?<=2\$).+?(?=3\$)", RegexOptions.Singleline).Value
    6. Dim PartC = Regex.Match(Content, "(?<=3\$).+?(?=$)", RegexOptions.Singleline).Value

    Genutzte Imports: System.Text, System.Text.RegularExpressions, System.IO

    EDIT: Gerade gesehen... ;)
    Könnte es sein, dass Iterations-Funktionen erst ab einem gewissen Framework unterstützt werden, welche du unterschreitest?
    Tja... :rolleyes: *wart*

    EDIT: Ach, jetzt komm schon, @guccini:! Wo liegt das Problem?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Higlav“ ()

    so hab den 2012er drauf ........und ich muss sagen vielen,vielen DANK......was noch schöner wäre , die textdateien aus der listbox als verzeichnis und beim drauf klicken auf die textdatei wird die dann in den 3 texbox angezeigt.....! :thumbsup:
    Würde gerne das so machen...bekomme es nicht hin

    BlackNetworkBit schrieb:

    Versuche mal das :

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim filesdirectory As String = String.Empty
    3. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    4. ReadFilesInListbox(ListBox1, "C:\Users\Public")
    5. End Sub
    6. Public Sub ReadFilesInListbox(ByVal listbox As ListBox, path As String)
    7. Dim directory As New IO.DirectoryInfo(path)
    8. Dim files As IO.FileInfo() = directory.GetFiles()
    9. filesdirectory = path
    10. listbox.Items.Clear()
    11. For i = 0 To files.Count - 1
    12. listbox.Items.Add(files(i).ToString)
    13. Next
    14. End Sub
    15. Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    16. If IO.File.Exists(IO.Path.Combine(filesdirectory, ListBox1.SelectedItem.ToString)) = True Then
    17. RichTextBox1.Text = IO.File.ReadAllText(IO.Path.Combine(filesdirectory, ListBox1.SelectedItem.ToString))
    18. End If
    19. End Sub
    20. End Class
    schön du hast dir jetzt erfolgreich Code zusammenkopiert und nix gelernt dabei.
    Hast du wenigstens versucht die Aufgabe von Highlav alleine zu lösen? ich seh es
    nämlich nirgends.
    Wenn du Probleme mit deinem selbst geschriebenen Code hast kannst ja kommen und
    Fragen aber kommen, Code zusammenkopieren und dann um Hilfe schreien ist nicht die
    feine Art.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.
    Kein Problem....wenn ich zuhause bin werde ich mein Code posten.....wenn ich es nicht probiert hätte hätte ich ja nicht danach gefragt.....mache vergleiche und teste...möchte es auch verstehn anhand eure Beispiele...sorry Anfänger.
    vielleicht bringt dich das weiter :

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    3. SaveToFile({TextBox1, TextBox2, TextBox3}, "C:\Users\......\Desktop\LOLAAAAAAAAAAA.txt")
    4. End Sub
    5. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    6. ReadToTextbox({TextBox1, TextBox2, TextBox3}, "C:\Users\..........\Desktop\LOLAAAAAAAAAAA.txt")
    7. End Sub
    8. Public Sub ReadToTextbox(ByVal controls() As TextBox, file As String)
    9. Dim st As String() = IO.File.ReadAllText(file).Split({"$"}, StringSplitOptions.RemoveEmptyEntries)
    10. For i = 0 To st.Count - 1
    11. If controls.Count - 1 >= i Then
    12. controls(i).Text = st(i).Remove(0, st(i).IndexOf(Environment.NewLine))
    13. End If
    14. Next
    15. End Sub
    16. Public Sub SaveToFile(ByVal controls() As TextBox, file As String)
    17. Using sw As New IO.StreamWriter(file)
    18. For i = 0 To controls.Count - 1
    19. sw.WriteLine("$" & controls(i).Name)
    20. sw.WriteLine(controls(i).Text)
    21. Next
    22. End Using
    23. End Sub
    24. End Class

    Dieser Code würde die 3 TextBoxen speichern und wieder laden. ( Textbox1 , Textbox2, Textbox3 )
    Das speichern erfolgt zu testzwecken dann wenn die Form geschlossen wird :D
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BlackNetworkBit“ ()