Habe zu diesem Thema mal bischen im Forum rumgelesen und mir dann auch das Programm "TextDiff" mit Souce mal runtergeladen.
Ist ja ganz gut das teil aber geht sowas nicht auch etwas einfacher.
Nur zwei dateien vergleichen und die unterschiede farbig markieren ohne schnik schnak.
Ich habe das mit 2 Richeditfeldern auch schon so ziemlich am laufen nur je grösser die dateien um so langsamer wird die geschichte.
Delphi-Quellcode:
procedure TfrmVergleich.sbtnVergleichClick(Sender: TObject);
var
a,b,c,e,f,g,Z1,Z2 : Integer;
m1Str,m2Str,d,h: String;
label v1,v2;
begin
pBar1.Max := LinesCountR1;
pBar2.Max := LinesCountR2;
Z1 :=0;
Z2 :=0;
For a := 0 To REdit1.Lines.Count-1 do
begin
pBar1.Position := a;
For b := 0 To REdit2.Lines.Count-1 do
if REdit2.Lines[b]= REdit1.Lines[a] then
goto v1;
m1Str := REdit1.Lines[a];
c := Length(REdit1.Lines[a]);
d := m1Str;
delete (m1Str,1,c);
REdit1.Lines[a] := m1Str;
REdit1.SelAttributes.Color:=clRed;
insert (d,m1Str,1);
REdit1.Lines[a] := m1Str;
Z1 := (Z1+1);
REdit1.SelAttributes.Color:=clBlack;
V1: end;
For e := 0 To REdit2.Lines.Count-1 do
begin
pBar2.Position := e;
For f := 0 To REdit1.Lines.Count-1 do
if REdit1.Lines[f]= REdit2.Lines[e] then
goto v2;
m2Str := REdit2.Lines[e];
g := Length(REdit2.Lines[e]);
h := m2Str;
delete (m2Str,1,g);
REdit2.Lines[e] := m2Str;
REdit2.SelAttributes.Color:=clRed;
insert (h,m2Str,1);
REdit2.Lines[e] := m2Str;
Z2 := (Z2+1);
REdit2.SelAttributes.Color:=clBlack;
v2: end;
lblFehler1.Caption := IntToStr(Z1)+ ' Fehler !';
lblFehler2.Caption := IntToStr(Z2)+ ' Fehler !';
REdit1.Lines[0] := REdit1.Lines[0];
REdit1.SelStart := 0;
REdit1.SetFocus;
end;
Das ist der Versuch eines ziemlichen anfängers auf Delphi also bitte nicht gleich mit grausen abwenden.
Vieleicht hat ja jemand eine Idee dazu.
mfg
bikeruk