Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.431 Beiträge
 
Delphi 7 Professional
 
#5

AW: Webpages vergleichen und Änderungen ermitteln

  Alt 17. Nov 2021, 19:40
HTML ist ein formatfreier Text.

Das trennen von Tags und Text per Zeilenbrüchen ändert da schonmal nix. Auch das entfernen der Zeilenumbrüche im Text und deren Ersetzung durch Leerzeichen nicht, da die Zeilenumbrüche vom Browser sowieso ignoriert werden.

Dann werden die Tag-Zeilen eben nicht entfernt, sondern nur die Zeilen zwischen den Tags verglichen. Das sollte mit zwei Stringlisten zu realisieren sein.

Die dann zeilenweise durchgehen, Tagzeilen ignorieren, Textzeilen vergleichen. Sind sie gleich, ok, ansonsten halt weiter prüfen.

Dazu nimmt man dann zwei weitere Stringlisten, die jeweils den Inhalt einer Zeile aufnehmen und zwar als DelimitedText. Dann hat man zwei Listen, mit jeweils einem Wort in einer Zeile. Die kann man dann wiederum zeilenweise vergleichen. Gibt's da 'nen Unterschied, sucht man sich das entsprechend Wort in der ursprünglichen Textzeile und ersetzt es z. B. so in der Art:

TextZeile := AnsiReplaceText(Textzeile,'WortDasAndersIst','<span style="color:yellow">' + 'WortDasAndersIst' + '</span>');

Das sieht erstmal irgendwie ein bisserl unübersichtlich aus, dürfte aber recht einfach zu realisieren sein.
Und gibt es mehrere unterschiedliche Wörter in einer Zeile hintereinander, dann wird halt jedes Wort davon farblich hervorgehoben, ja und? Hat der Browser eben ein bisserl mehr Arbeit, aber man spart sich den Aufwand, irgendwelche Textbereiche von "Beginn der Änderung" bis "Ende der Änderung" zu suchen. Das würde dann eher sportlich

Oder noch "brutaler".

Wie gesagt: Der Text ist formatfrei:

Daraus können wir schließen, dass auch jedes einzelne Wort in einer Zeile stehen darf.

Tags, wie gehabt in eigene Zeile "pappen".

In Textzeilen wird grundsätzlich jedes Leerzeichen durch einen Zeilenumbruch ersetzt.

Dann reichen zwei Stringlisten, die zeilenweise verglichen werden können. Unterschiedliche Zeilen werden mit Span-Tags (o. ä.) zur Farbhervorhebung ergänzt. Hier könnten dann aber auch bekannte DIFF-Tools helfen. Wenn nicht, muss man eben bei eingefügten oder entfernten Wörtern die Stringlisten selbst synchronisieren.

Geändert von Delphi.Narium (17. Nov 2021 um 19:49 Uhr) Grund: Schreibfehler ...
  Mit Zitat antworten Zitat