Einzelnen Beitrag anzeigen

bikeruk

Registriert seit: 20. Jan 2005
Ort: Holzgerlingen
5 Beiträge
 
#1

Dateien vergleichen

  Alt 25. Jan 2005, 19:45
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
  Mit Zitat antworten Zitat