2 Textdateien Vergleichen und "nur" den Unterschied ausgeben!

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    2 Textdateien Vergleichen und "nur" den Unterschied ausgeben!

    Hallo zusammen,

    Ich bin neu hier und wollte fragen, ob es eine Möglichkeit gibt, den Inhalt von 2 Textdateien zu vergleichen und "nur" den Unterschied in eine 3te Textdatei einzutragen.

    Meine Textdateien sind ungefähr so Aufgebaut:

    Inhalt der ersten Datei:
    Beispiel;2;111;3;1;0;0;0;0;0;-

    Inhalt der zweiten Datei:
    Beispiel;2;2000;3;1;0;0;0;0;0;-

    Nun sollte es nur 111 ausgeben.

    Ich habe es schon mit diesem Code probiert, jedoch gibt dieser mir lediglich die ganze Zeile wieder aus, anstatt nur den Unterschied. ?(

    VB.NET-Quellcode

    1. Dim FSO, OldData, NewData, Datei3, tmp1, tmp2
    2. FSO = CreateObject("Scripting.FileSystemObject")
    3. OldData = FSO.OpenTextFile(Pfad1)
    4. NewData = FSO.OpenTextFile(Pfad2)
    5. Datei3 = FSO.OpenTextFile(Pfad3)
    6. tmp2 = OldData.readall
    7. Do Until NewData.AtEndOfStream
    8. tmp1 = NewData.readline
    9. If InStr(tmp2, Trim(tmp1)) = 0 Then
    10. Datei3.Write(tmp1)
    11. End If
    12. Loop
    13. OldData.Close
    14. NewData.Close
    15. Datei3.Close


    Wäre sehr dankbar für eine mögliche Lösung, bin schon seit 2 Tagen am verzweifeln deswegen ;( :saint:
    @Zahlensuppe Willkommen im Forum. :thumbup:
    Bitte schreib kein eigenes Tool dafür!
    Du kommst vom Hundertsten ins Tausendste, präzisierst permanent die Anforderungen und wirst nicht fertig.
    Ich verwende zum Vergleich aller Arten von Dateien WinMerge.
    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!
    @Zahlensuppe Hi, hier eventuell der Code Schnippsel den Du suchst.

    Ich bin eher in C# unterwegs. Es besteht die Möglichkeit den C# Code per OnlineConverter von C# <-> VB.net hin und her zu konvertieren :)
    (google telerik vb c#)

    C# Consolen Project mit VisualStudio T1.txt und T2.txt Datei im selben Ordner wie die .exe (also wahrscheinlich in deinem Debug Ordner) die Ergebnis-Textdatei T3.txt wird dann auch dort erstellt.

    Spoiler anzeigen

    C#-Quellcode

    1. class Program
    2. {
    3. static void Main(string[] args)
    4. {
    5. var t1 = File.ReadAllText("T1.txt").Split(';');
    6. var t2 = File.ReadAllText("T2.txt").Split(';');
    7. Console.WriteLine(string.Join(" ", t1));
    8. Console.WriteLine(string.Join(" ", t2));
    9. var diff = t1.Except(t2);
    10. var result = string.Join(";", diff);
    11. File.WriteAllText("T3.txt", result);
    12. Console.WriteLine(result);
    13. Console.ReadLine();
    14. }
    15. }



    Online konvertiert nach Vb (ohne Gewähr)
    Um nur die Datei zu erzeugen ohne das die Sachen in der Console angezeigt werden reicht sowas:

    VB.NET-Quellcode

    1. Class Program
    2. Private Shared Sub Main(ByVal args As String())
    3. Dim t1 = File.ReadAllText("T1.txt").Split(";"c)
    4. Dim t2 = File.ReadAllText("T2.txt").Split(";"c)
    5. Dim diff = t1.Except(t2)
    6. Dim result = String.Join(";", diff)
    7. File.WriteAllText("T3.txt", result)
    8. )
    9. End Sub
    10. End Class


    falls das noch Fehler auftauchen eventuell noch usings/Imports ergänzen:
    Spoiler anzeigen

    C#-Quellcode

    1. Imports System
    2. Imports System.Collections.Generic
    3. Imports System.IO
    4. Imports System.Linq
    5. Imports System.Text
    6. Imports System.Threading.Tasks
    codewars.com Rank: 4 kyu

    Zahlensuppe schrieb:

    jedoch ist dieses Tool Teil eines weit aus größeren Programmes
    Diese Information gehört in den eröffnungs-Post. ;)
    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!