Vergleich nach Inhalt

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
JFierce7
Senior Member
Senior Member
Posts: 214
Joined: 2005-07-17, 10:47 UTC

Vergleich nach Inhalt

Post by *JFierce7 »

Hi,

irgendwie verstehe ich die Markierung der Unterschiede bei "Vergleich nach Inhalt" nicht. Liegt's an mir oder am verwendeten Algorithmus?

Nehmen wir doch mal folgendes Beispiel:
Image: http://img175.imageshack.us/img175/4125/tcdiffjz3.th.png

Der Unterschied ist offensichtlich das "const", das auf der einen Seite zusätzlich vorhanden ist. Warum verhackstückelt der TC die Anzeige so?

Zudem sehe ich es hier irgendwie als verwirrend an, dass auf der einen Seite "onstraintUsage" steht, auf der anderen aber noch ein Leerzeichen auftritt, dass natürlich nicht mit markiert wurde.

Das Verhalten ist in 6.56 und 7RC3 identisch. Ist da noch Verbesserung in Sicht?
User avatar
Ephraim
Junior Member
Junior Member
Posts: 37
Joined: 2007-04-24, 07:10 UTC

Post by *Ephraim »

Hmmm.... kommt des nur mir so vor oder ist das Bild da verdammt klein?

Ciao Ephraim
using registered TC since Monday, 31. July 2006, 07:54:15
JFierce7
Senior Member
Senior Member
Posts: 214
Joined: 2005-07-17, 10:47 UTC

Post by *JFierce7 »

Ups - sorry. Hab beim Editieren nur den Thumbnail verlinkt :-(
Hier das richtige Bild:
http://img175.imageshack.us/img175/4125/tcdiffjz3.png
User avatar
Hacker
Moderator
Moderator
Posts: 13144
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Hm, irgendwo hat mal Christian neulich den Compare Algoritmus beschrieben, kann den Thread aber nirgends finden. :( Vielleicht hat jemand mehr Gluck bei der Suche.

Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50817
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Total Commander ist ein Programm, kein Mensch. Während es einem Menschen klar ist, dass da das "Const" geändert wurde, findet TC halt die Uebereinstimmung "aConst" zuerst...
Author of Total Commander
https://www.ghisler.com
JFierce7
Senior Member
Senior Member
Posts: 214
Joined: 2005-07-17, 10:47 UTC

Post by *JFierce7 »

Genau darum ging es mir ja. Ich möchte als Mensch gern die Ausgabe des Programms verstehen. ;-) Allerdings dürfte es doch nicht die Aufgabe des Benutzers sein, wie das Programm zu denken, sondern das Programm sollte die Ausgabe entsprechend aufbereiten.

Wenn ich das nun richtig interpretiere, bedeutet die blaue Markierung so viel wie: wenn DAS auf beiden Seiten gelöscht wird, stimmen die Zeilen überein.

Gerade weil Mensch und Maschine die Aufgabe Unterschiede zu finden unterschiedlich lösen, wäre es meiner Meinung nach besser, die gesamte Zeile zu markieren oder zumindest Whitespace als Begrenzungen sinnvoll zu wählen. Ansonsten finde ich die Markierung zu verwirrend. Nicht nur, aber auch, weil nicht erkennbar ist, dass das Leerzeichen zu den Unterschieden gehört.
StatusQuo
Power Member
Power Member
Posts: 1524
Joined: 2007-01-17, 21:36 UTC
Location: Germany

Post by *StatusQuo »

JFierce7 wrote:wäre es meiner Meinung nach besser, die gesamte Zeile zu markieren oder zumindest Whitespace als Begrenzungen sinnvoll zu wählen.
Bitte nicht! Beim Vergleich von Quelltexten kommt es nicht selten auf kleinste Unterschiede / einzelne Zeichen an, die der Mensch dann mühsam selbst suchen müsste.
Who the hell is General Failure, and why is he reading my disk?
-- TC starter menu: Fast yet descriptive command access!
seb
Member
Member
Posts: 131
Joined: 2003-03-04, 07:41 UTC

Post by *seb »

ihr müsst an die sache anders rangehen:

es wird angezeigt, welche zeilen unterschiedlich sind (man sieht es an den anderfarbigen zeilennummern)

dann wird von TC sogar noch der versuch unternommen, die einzelnen unterschiede farbig zu markieren, das klappt halt nur bedingt, aber ein super vorteil isses doch allemal

:-))

Christian, veröffentliche doch einfach mal den Algo dazu, dann können sich die anderen schlauen köpfe verbesserungsvorschläge überlegen :-))
Juergen
Power Member
Power Member
Posts: 517
Joined: 2003-05-02, 18:19 UTC
Location: Berlin (Germany)
Contact:

Post by *Juergen »

Ich kann mich nur StatusQuo und seb anschließen.
In diesem Sinne wäre es hilfreich wenn auch Leerzeichen markiert würden, die nur auf einer Seite vorhanden sind.

Gruß, Jürgen
My add-ons and plugins for TC: NiftyLink, mbox, Sequences
JFierce7
Senior Member
Senior Member
Posts: 214
Joined: 2005-07-17, 10:47 UTC

Post by *JFierce7 »

StatusQuo wrote:Beim Vergleich von Quelltexten kommt es nicht selten auf kleinste Unterschiede / einzelne Zeichen an, die der Mensch dann mühsam selbst suchen müsste.
Zumindest für mich ist es mühsamer, falsche Kennzeichnungen zu interpretieren...

Tatsächlich wäre es für die Interpretation aber ganz sinnvoll, den Algorithmus zu kennen.

Kann man eigentlich Farbe und Hintergrund der Markierung wie auch des Balkens bei "Nächster"/"Vorheriger" Unterschied ändern? Wie?
JFierce7
Senior Member
Senior Member
Posts: 214
Joined: 2005-07-17, 10:47 UTC

Post by *JFierce7 »

seb wrote:es wird angezeigt, welche zeilen unterschiedlich sind (man sieht es an den anderfarbigen zeilennummern)
Hmm - stimmt. :D
Vielleicht wäre es nützlich, die Art der Markierung der Zeilennummer anpassen zu können.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50817
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Der Algorithmus ist eigentlich sehr einfach. Ich erklaere ihn anhand des obigen Beispiels:
[face=courier]Zeile 1: } *const aConstraintUsage;
Zeile 2: } *aConstraintUsage;[/face]
Total Commander nimmt erst mal so viele gleiche Zeichen, wie er finden kann:
[face=courier]Zeile 1: } *
Zeile 2: } *[/face]
Dann sucht er in beiden Strings nach der nächsten Übereinstimmung. Dazu wird erst Zeichen Zeile1Pos mit Zeile2Pos+1 verglichen, dann Zeile1Pos+1 mit Zeile2Pos, dann Zeile1Pos+1 mit Zeile2Pos+1 etc. Die Übereinstimmung mit dem kleinsten quadratischen Abstand von der aktuellen Position wird genommen.

Offenbar wurde in obigem Beispiel mit der Option "Gross/Kleinschreibung beachten" verglichen. Deshalb findet Total Commander die folgende Übereinstimmung (unterstrich= übersprungen):
[face=courier]Zeile 1: } *_co
Zeile 2: } *aCo[/face]
Das 'a' wird also als Einfügung erkannt, das 'c' als Unterschied. Das 'o' ist die erste neue Übereinstimmung.

Nun geht das Spiel von Neuem los: TC sucht erst wieder lauter gleiche Zeichen:
[face=courier]Zeile 1: } *_const
Zeile 2: } *aConst[/face]
Und wieder die nächste Übereinstimmung:
[face=courier]Zeile 1: } *_const aConstr
Zeile 2: } *aConst_______r[/face]
Und schliesslich die restlichen übereinstimmenden Zeichen:
[face=courier]Zeile 1: } *_const aConstraintUsage;
Zeile 2: } *aConst_______raintUsage;[/face]
Somit ergibt sich genau das Bild, das User JFierce7 hier eingestellt hat. Woher soll Total Commander nun wissen, dass der Textteil "onst" aus "Constraint" zum "Constraint" in der anderen Datei gehört, und nicht zum neu eingefügten "const"?
Author of Total Commander
https://www.ghisler.com
User avatar
Hacker
Moderator
Moderator
Posts: 13144
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Nur so 'ne dumme Frage - wie waere es nach der laengsten Ubereinstimmung zu suchen, anstatt nach der am naehesten liegenden?

Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
seb
Member
Member
Posts: 131
Joined: 2003-03-04, 07:41 UTC

Post by *seb »

die idee kam mir auch gerade

für die einfachen benutzer sollte alles beim alten bleiben

und für die mit viel zeit könnten noch zusätzliche algos eingebaut werden, die alle bisserm rumsuchen und dann wir einfach die ergebniszeile mit den geringsten unterschieden genommen, oder sowas in der richtung
MrGolgi
Member
Member
Posts: 153
Joined: 2007-06-12, 20:27 UTC
Contact:

Post by *MrGolgi »

ich hatte vor kurzem das selbe "problem" gemeldet:
http://www.ghisler.ch/board/viewtopic.php?t=16774&highlight=mrgolgi
Immerhin verstehe ich jetzt, warum ich so merkwürdige Ergebnisse erhalte.

Ich denke es sollte eine Option geben nur ganze Worte (Token) zu vergleichen. Das sollte für die meisten Anwender, die vermutlich eher Texte (Code) durchsuchen, als Binärdateien, besser funktionieren.

Als TC Fan wurmt es einen ja doch, wenn ein Tool wie Windiff das "richtig" macht und das Resultat beim TC leider unbrauchbar ist.

Gruß MrGolgi
Ein Pessimist ist ein Optimist mit Erfahrung
Post Reply