AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien vergleichen

Ein Thema von bikeruk · begonnen am 25. Jan 2005 · letzter Beitrag vom 19. Okt 2005
Antwort Antwort
bikeruk

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

Dateien vergleichen

  Alt 25. Jan 2005, 18: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
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
293 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Dateien vergleichen

  Alt 26. Jan 2005, 08:10
Hi!

Ich habe eine kleine Sourceverwaltung geschrieben, die dem Visual-Source-Safe angelehnt ist. Unter anderem brauchte ich dort auch eine Differenzanzeige. Ich habe einfach die beiden Dateien mit dem Programm FC.EXE verglichen und die Differenzen dann in zwei Listboxen angezeigt. Einfach als erstes Zeichen jeder Zeile eine Zahl vorgehängt, welche Farbe verwendet werden soll. In OnDrawItem habe ich das eine Zeichen wieder abgeschnitten und damit die Farbe ausgewertet. Dann nur noch Zeichenen. Die linke und die rechte seine habe ich dann per Botschaften miteinander verknüpft.
Mal sehen, wann ich das Teil so weit habe, daß ich daß online stelle. Es soll open source werden. Ach ja, TinySafe heißt das Teil.

Stefan
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Dateien vergleichen

  Alt 26. Jan 2005, 09:02
wie hast du die differenzen der fc denn ausgelesen mit Delphi?
  Mit Zitat antworten Zitat
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
293 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Dateien vergleichen

  Alt 26. Jan 2005, 16:42
Hi perle,

ganz einfach: Du nimmst eine Batchdatei.
Code:
FC %1% %2% >Diff.Txt
Du startest die Batchdatei mit den beiden Dateien als Parameter und bekommst dann die Datei Diff.Txt zurück. Die Rückgabedatei kannst du natürlich auch übergeben. Nur ">" darfst du nicht als Parameter übergeben, das gibt Probleme. Danach liest du die Datei und die beiden anderen Dateien aus und füllst entsprechend eine StringList.

Stefan
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Benutzerbild von sofl
sofl

Registriert seit: 19. Okt 2005
Ort: Dresden
16 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Dateien vergleichen

  Alt 19. Okt 2005, 13:20
Hi leute, hab ma ene einfache Funktion geschrieben die einfach nur zeigt ob zwei Dateien gleich sind oder nicht.


Delphi-Quellcode:
function compari(dat1: string;dat2: string): Boolean;
var
  F, F2: TextFile;
  S, S2: string;
  begin
  AssignFile(F, dat1);
  AssignFile(F2, dat2);
  Reset(F);
  Reset(F2);
  repeat
  Readln(F, S);
  Readln(F2,S2);
  until (SeekEof(F) = True) or (S <> S2);
  IF (S <> S2) or (SeekEof(F) <> SeekEof(F2)) THEN Result := False
  else
  Result := True;
  CloseFile(F);
  CloseFile(F2);
end;
hoffe das ich irendwem damit helfen konnte

bye

[edit=Luckie]Delphi-Tags. Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#6

Re: Dateien vergleichen

  Alt 19. Okt 2005, 13:30
spontan hätte ich es so gemacht:

Delphi-Quellcode:
function CompareFiles(F1, F2: String): Integer;
var T: TStringList;
    S1, S2: String;
    i: Integer;
begin
  T:=TStringList.Create;
  T.Clear;
  T.LoadFromFile(F1);
  S1:=T.Text;
  T.Clear;
  T.LoadFromFile(F2);
  S2:=T.Text;
  T.Free;
  Result:=Abs(Length(S1)-Length(S2));
  for i:=1 to Min(Length(S1),Length(S2)) do
    if S1[i]<>S2[i] then Inc(Result);
end;
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
19. Okt 2005, 13:30
Dieses Thema wurde von "Luckie" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Ist ein Delphi Problem.
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Dateien vergleichen

  Alt 19. Okt 2005, 13:56
Wenn es nur darum geht, ob gleich oder nicht, dann ist man mit Hashes wohl am schnellsten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 14:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz