Wie bekomme ich eine Textdatei eingelesen und aufgeteilt?

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von little-nemo.

    Wie bekomme ich eine Textdatei eingelesen und aufgeteilt?

    Hallo Leute,

    ich habe eine Textdatei. In dieser Textdatei stehn zeilenweise zusammengesetzt die Werte z.B. owner=little-nemo. Die Textdatei ist unterschiedlich lang, aber immer in 5er Schritten.
    Jetzt möchte ich die Textdatei einlesen, die Länge zählen, die Länge durch fünf teilen => ergibt die Höhe der Tabelle, die Breite ist immer 5, die Einträge am Gleichheitssymbol splitten und die Tabelle füllen. Die Einträge in der Textdatei müssen folgendermaßen in die Tabelle. Die ersten 5 Einträge in der Textdatei ist die erste Reihe ( Zeile) der Tabelle.

    Ich weiß jetzt nur nicht wie ich anfangen soll?

    Gruß
    little-nemo
    Nimm zunächst

    VB.NET-Quellcode

    1. Dim inhalt() As String = System.IO.File.ReadAllLines(MY_PATH)

    um die Datei zu lesen.
    Im Array Inhalt hast Du dann jede Zeile einzeln.
    Dann sehen wir weiter.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich würde dir generell INI-Dateien empfehlen... Mit diesen hast du prinzipiell eine statische Formatierung, kannst diese aber bequem anpassen. Beispiel einer INI-Datei:

    Spoiler anzeigen
    [Einstellungen]
    TabellenHoehe=10
    TabellenBreite=5

    [Block1]
    Eintrag1=Test 1
    Eintrag2=Test 3
    Eintrag3=Test 4
    Eintrag4=Test 5
    Eintrag5=Test 6

    [Block2]
    usw...


    Wenn du dich vollkommen in den Wahnsinn treiben lassen willst, dann lass dir XML empfehlen - XML ist präzise, kompakt, dafür meiner Meinung nach in VB von einlesen der Daten nicht erträglich... Beispiel einer XML-Datei:

    Spoiler anzeigen
    <?xml-version="1.0" encoding="UTF-16"?>
    <Data>
    <Einstellungen>
    <TabellenHoehe>5</TabellenHoehe>
    <TabellenBreite>10</TabellenBreite>
    </Einstellungen>
    <Block id="1">
    <Eintrag id="1">Test1</Eintrag>
    <Eintrag id="2">Test2</Eintrag>
    <Eintrag id="3">Test3</Eintrag>
    <Eintrag id="4">Test4</Eintrag>
    <Eintrag id="5">Test5</Eintrag>
    </Block>
    <Block id="2">
    usw...
    </Block>
    </Data>


    Solange du eigene Formate hast, die recht simpel sind, rate ich dir von ihnen ab. Bei XML und INI hast du eine zuverlässige Formatierung, bei der du leicht und mehr oder minder schwer an deren Werte kommst... Für beide Methoden gibt's bei Google Tonnen von Hilfs-Material...

    BTT: Rod hat schon eine gute Methode vorgeschlagen.
    Um dann noch spezielle Werte, z.B. die der Höhe und Breite der Tabelle zu finden, könntest du diese Werte in der Datei kennzeichnen, z.B. mit "s_Breite=5" und "s_Hoehe=5"
    Dann noch mit einer For-Schleife durch das Array wühlen und überprüfen, ob diese Werte vorhanden sind.

    MfG,
    X-Zat / Momo
    Hallo Leute,

    ich komme nicht weiter.

    So sieht die TXT aus.
    AAAA=BBBB
    CCCC=DDDD
    EEEE=FFFF

    Mein Script läuft nicht durch sondern stoppt immer bei Index 2.

    Imports System.IO
    Module Module1

    Sub Main()
    Dim i = 0
    Dim LIST As String
    Dim tz = "="
    Dim RLIST() As String
    Dim arl As Integer
    Dim MY_PATH = "(MY_PATH)"
    Dim inhalt() = System.IO.File.ReadAllLines(MY_PATH)
    arl = inhalt.Length
    MsgBox(arl)
    Do While i < arl
    MsgBox(i)
    RLIST = Split(inhalt(i), tz)
    LIST = CStr(RLIST(i))
    MsgBox(LIST)
    i = i + 1
    Loop
    End Sub

    End Module

    Gruß
    litte-nemo
    Mach zunächst aus dem Do While - Loop
    eine For - Next-Schleife.
    Da Du nur 3 Einträge hast, stoppt er beim letzten.
    Start-Index = 0, End-Index = 2 :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Habe deinen code mal zusammen gefasst:

    VB.NET-Quellcode

    1. Dim LineArray() As String = IO.File.ReadAllLines("PFAD")
    2. For Each l As String In LineArray
    3. Dim LineData As String() = l.Split("=")
    4. Dim VorDemGleich As String = LineData(0)
    5. Dim NachDemGleich As String = LineData(1)
    6. Next l