Wenn Sie schon seit einiger Zeit JSL schreiben, haben Sie wahrscheinlich mehrere Kopien Ihres Skripts gespeichert und sich irgendwann über die Unterschiede zwischen den Skripten gewundert. Es gibt keine gute Möglichkeit, die in Windows integrierte Frage zu beantworten. Hier finden Sie eine Möglichkeit, dies in JSL mithilfe von zu tun Kürzestes Bearbeitungsskript Funktion (die fast die ganze Arbeit erledigt).
CompareTextFiles = Function( {pathA, pathB},
{textA, textB, v, gray, red, green, ipart, parts, kind, text, vv, bb},
textA = Load Text File( pathA );
textB = Load Text File( pathB );
parts = Shortest Edit Script( lines( textA, textB, ignorewhitespace() ) );
v = V List Box();
gray = RGB Color( .9, .9, .9 );
red = RGB Color( 1, .7, .7 );
green = RGB Color( .7, 1, .7 );
For( ipart = 1, ipart <= N Items( parts ), ipart += 1,
{kind, text} = parts[ipart];
bb = MouseBox(
Border Box( Left( 10 ), Right( 100 ),
// trim removes a final CR that double spaces the joint
// between text boxes in the vlistbox. the 3 spaces added
// back hides a rendering error that clips the last chars
// in a line...sometimes.
Text Box( Trim( text, right ) || " ", <<SETWRAP></SETWRAP>Die Funktion erwartet zwei Dateinamen und gibt eine Vlist-Box zurück, die zum Einbetten in ein Fenster geeignet ist. Das Vlist-Feld enthält eine Reihe von Textfeldern, die auf einem grauen, roten oder grünen Hintergrund gezeichnet sind. Das von der Funktion „Shortest Edit Script“ zurückgegebene Bearbeitungsskript ist eine Liste von Befehlen: Daten behalten gemeinsam zu beiden Saiten (grau), löschen Daten aus der ersten Zeichenfolge (rot), einfügen Daten aus der zweiten Zeichenfolge (grün). Mit nur diesen drei Befehlen ist das Skript „ein“ (nicht „das“) kürzestmögliche Skript zum Konvertieren von String A in String B.
Die MouseBox fügt den roten und grünen Abschnitten einen Tooltip hinzu, der erklärt, welche Datei diese Daten verloren hat oder welche Daten hinzugefügt wurden.
Der Kürzestes Bearbeitungsskript verfügt über einige andere Parameter (die hier nicht verwendet werden), die für längere Dateien nützlich sind, insbesondere die Grenze Parameter. Indem Sie eine vernünftige Grenze von 500 oder 1000 Unterschieden festlegen, können Sie einfach sagen: „Diese Dateien sind wirklich unterschiedlich“, ohne zu viel Zeit damit zu verbringen, auf einen wirklich langsamen Vergleichsprozess zu warten, der wahrscheinlich keine interessanten Ergebnisse liefert. Die Funktion wird mit aufgerufen Ignorieren Sie Leerzeichen Parameter, weil ich nicht an Zeilen interessiert bin, die unterschiedlich eingerückt sind.
Two versions of Jabberwocky downloaded from the webTwo versions of Jabberwocky downloaded from the webTwo versions of Jabberwocky downloaded from the webTwo versions of Jabberwocky downloaded from the webZwei Versionen von Jabberwocky aus dem Internet heruntergeladen
Mindestens eine dieser Versionen wurde gegenüber dem Original geändert.
Skript beigefügt.