Zeilen in Textdatei mit Trennzeichen erweitern

  • VB6

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Zeilen in Textdatei mit Trennzeichen erweitern

    Hallo zusammen,

    wie mein Name schon verrät, bin ich absoluter Neuling in VB und bitte daher um etwas Nachsicht. Gleichwohl habe ich eine, aus meiner Sicht, sehr schwierige Aufgabe zu lösen.

    Gegeben ist eine txt.Datei mit variierendem Namen. Der Inhalt der Datei hat immer das Format

    23.02.2019 11:18:54.429;OG Tre Haus [FgF] AB-TRrt neub;. k;
    28.02.2019 06:23:20.753;UG Kel 380 AV5 Kl 56h 2B ;TRT nv+ Ane;

    entstehen soll daraus folgendes Format

    DATUM;UHRZEIT;Flur;Text1;Text2;Text3
    23.02.2019;11:18:54.429;OG Tre;Haus [FgF];AB-TRrt neub;. k;
    28.02.2019;06:23:20.753;UG Kel;380 AV5 Kl;56h 2B ;TRT nv+ Ane;

    Es soll also eine neue erste Zeile mit den Überschriften erstellt werden. Weiterhin wird das Datum nach der Jahreszahl mit ";" getrennt. Der mittlere Block der Ausgangsdaten(von Semikolon 1 bis 2) wird immer nach dem 8.Zeichen mit einem neuen ";" abgetrennt und nach dem 27.Zeichen ebenfalls. Zusätzlich können nach jedem ";" die führenden Leerzeichen entfallen.

    Ich hoffe, die vielen schlauen Mitglieder hier können mir helfen, einen VB-Code zu entwicklen, welcher dies leisten kann.

    Im voraus bereits Vielen Dank für Eure Vorschläge.
    @TotalerAnfänger Willkommen im Forum. :thumbup:
    Programmierst Du tatsächlich in VB6 oder doch in VB.NET? => [Allgemein] VB.NET, VB6, VBA, VBS — Mit welcher Sprache programmiere ich eigentlich?
    Unter VB.NET geht das ganz einfach, sollte in VB6 ähnlich einfach gehen:
    Öffne die Quelldatei.
    Öffne die Zieldatei und schreib da den Header rein.
    Gehe die Quelldatei zeilenweise durch und hänge die manipulierten Zeilen an.
    Dateien schließen.
    Feddich.
    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!
    Hallo RodFromGermany,

    ich programmiere tatsächlich in VB6. Leider habe ich bisher nur VBA in Excel "programmiert" und da sehr wenig mit den Funktionen für Dateien usw. zu tun gehabt.

    Wäre es möglich, dass Du mir Bespielcode schickst, welcher das Thema für einen Anfänger verständlich macht. Deine Auflistung der prinzipiellen Vorgehensweise ist ja schon ein guter Anfang.

    Danke für die schnelle Antwort. :thumbup:

    Folgende Probleme habe ich im Einzelnen aktuell noch.
    1. Wie nutzt man Datei-händel mit einen variablen Dateinamen?
    2. Wie manipuliere ich die Zeilen so, dass das Zielformat entsteht? Welche Funktionen nutzt man dafür?

    schon gelöst habe ich:
    - den lesenden Zugriff auf Zeilen nach einigen Recherchen -->myRow = myFile.ReadLine
    - den schreibenden Zugriff mit der fertigen Zeile --> myTarget.WriteLine myLine


    Über eine Antwort mit einem kompletten Code, der das Problem löst, würde ich mich sehr freuen. Als Anfänger scheitert man ja sehr häufig an fehlender Erfahrung. Gerade bei der Übernahme von Codeteilen und dem mangelnden Verständnis für Syntax und die Fülle der Funktionen ist es häufig so, dass man den Code nicht zum laufen bekommt und keine Idee hat, woran es scheitert. Da ist ein komplettes Programm, was das Problem löst Gold wert. Wenn dann noch ein erfahrener User die Zeit und Muse findet, den Code so zu erklären, dass jemand wie ich dann noch versteht was dort passiert, ist es unbezahlbar und für Anfänger ein Hauptgewinn. 8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TotalerAnfänger“ ()

    Vb.net:

    VB.NET-Quellcode

    1. Private Shared Sub ChangeFileFormat(sFile As String)
    2. Dim lines = File.ReadAllLines(sFile).ToList
    3. File.Delete(sFile)
    4. For i = 0 To lines.Count - 1
    5. Dim splits = lines(i).Split(" "c, 2)
    6. splits(1) = splits(0) & ";" & splits(1)
    7. lines(i) = String.Join(" "c, splits.Skip(1))
    8. Next
    9. lines.Insert(0, "DATUM;UHRZEIT;Flur;Text1;Text2;Text3")
    10. File.WriteAllLines(sFile, lines.ToArray)
    11. End Sub
    In vb6 ists mir zu mühselig, ausserdem glaub ich nicht, dass du vb6 codest, weil in vb6 ist mir nicht bekannt, dasses ein

    TotalerAnfänger schrieb:

    myRow = myFile.ReadLine
    gibt

    Ansonsten: Bei Fragen fragen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Warum zur Hölle VB6 ? Außer in sehr speziellen Fällen, und das ist echt selten, gibt es keinen vernünftigen Grund dafür !
    de.wikipedia.org/wiki/Visual_Basic_Classic
    de.wikipedia.org/wiki/Visual_Basic_.NET
    Hallo zusammen und Danke für die Antworten!

    Leider hilft mir der .net code nicht weiter. ||
    Und ja, ich muss in VB6 coden, da die Applikation, in welcher dieser Code dann laufen soll nur VB6 und nicht .net zulässt. Daher nochmal die Bitte an alle schlauen Köpfe hier, doch bitte etwas Code als Ausgangsmaterial zur Verfügung zu stellen.

    TotalerAnfänger schrieb:

    doch bitte etwas Code als Ausgangsmaterial zur Verfügung zu stellen.


    Moin,

    ohne wirklich gesehen zu haben was du dir selbst schon erarbeitet hast wird dir hier sonst niemand einfach den Code "schenken".
    Zeig mal deinen Code den du hast, sag was er macht und was nicht funktioniert ( Fehlermeldung bitte immer dazu ).

    Dann können wir dir Anhand deines Code hier auf die Sprünge helfen. Solltest nur fertigen Code haben wollen ohne lernen dann
    ab in den Marktplatz und ne Gegenleistung springen lassen.

    Zumal glaube auch ich das du nicht in VB6 Codest. Denn myFile.Readline gibt es dort so nicht. Ließ dir also bitte mal den
    verlinkten Thread von @RodFromGermany durch.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen