AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Webpages vergleichen und Änderungen ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Webpages vergleichen und Änderungen ermitteln

Ein Thema von softtouch · begonnen am 17. Nov 2021 · letzter Beitrag vom 19. Nov 2021
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.599 Beiträge
 
Delphi 7 Professional
 
#1

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
Benutzerbild von softtouch
softtouch

Registriert seit: 13. Feb 2015
Ort: Kerpen
240 Beiträge
 
Delphi 12 Athens
 
#2

AW: Webpages vergleichen und Änderungen ermitteln

  Alt 17. Nov 2021, 19:43
Vielen Dank! Das klingt schon mal vielversprechend. Ich denke, ich werde das erst mal umsetzen und sehen wie es klappt.
  Mit Zitat antworten Zitat
Benutzerbild von softtouch
softtouch

Registriert seit: 13. Feb 2015
Ort: Kerpen
240 Beiträge
 
Delphi 12 Athens
 
#3

AW: Webpages vergleichen und Änderungen ermitteln

  Alt 19. Nov 2021, 08:08
Nichts klappt
Wenn eine Seite zum Beispiel

<br>Test<br>
<br>Test1<br>
<br>Test2<br>
<br>Test3<br>
<br>Test4<br>

hat, und ich zum Beispiel die 2, Zeile (mit test1) entferne, verschieben sich ja alle folgenden Zeilen nach oben, und stimmen mit der ursprünglichen Seite ja nicht mehr überein und der gesamte nachfolgende Text würde als geändert gefunden, was aber falsch wäre.

Sieht so aus, als würde das ein größeres Problem werden. Das so etwas geht, kann man an dem alten UpdatePatrol tool sehen, aber wie zur Hölle habe die das gemacht?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.784 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Webpages vergleichen und Änderungen ermitteln

  Alt 19. Nov 2021, 08:16
.. wäre es eine Möglichkeit den HTML-Code nach Text (html2Text) zu konvertieren
und diesen dann zu vergleichen.
Im Text wären dann nur die Inhalte zu sehen.
Hier ist dazu eine Diskussion mit Lösungsansätzen zu finden: http://www.delphigroups.info/2/3/209810.html

Grüße
Klaus
Klaus

Geändert von Klaus01 (19. Nov 2021 um 08:19 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: Webpages vergleichen und Änderungen ermitteln

  Alt 19. Nov 2021, 10:00
Zuerst musst Du die Tags vom Text trennen (s. o.), sonst wirst Du scheitern.

Du darfst natürlich nicht stur zeilenweise vergleichen, sondern musst dann, wenn Du etwas aus der alten Datei in der neuen Datei nicht an der gleichen Position findest, für diese Zeile prüfen, ob Du sie irgendwo "hinter" der fehlenden Zeile findest. Und natürlich auch umgekehrt.

Du musst letztlich für jede Zeile prüfen, ob sie eventuell in der anderen Datei an einer späteren Position zu finden ist. Ist dem so, musst Du in der Datei, in der sie fehlt, solange Leerzeilen einfügen, bis Du wieder eine zeilenweise Übereinstimmung zwischen beiden Dateien erhalten hast.

Und nein, das ist nicht trivial.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz