Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   File compare (https://www.delphipraxis.net/160642-file-compare.html)

DeddyH 24. Mai 2011 12:22

AW: File compare
 
Zitat:

Zitat von Deep-Sea (Beitrag 1102540)
@DeddyH:
Dann lade mal bitte zwei 20GB große Dateien in den Arbeitsspeicher :P

Hab ich etwa gesagt, dass ich hier mal eben die ultimative Routine aus dem Handgelenk schreibe? Es ging ja nur darum, das vorher angedeutete Prinzip in Code zu formulieren. Wenn ich natürlich gewusst hätte, das Hagen da schon was Fertiges in petto hat, hätte ich mir die Mühe gespart :)

value is NULL 24. Mai 2011 12:26

AW: File compare
 
Kann ich auch irgendwie herausfinden, was genau sich geändert hat? zB die betroffene Zeile?

LG

DeddyH 24. Mai 2011 12:28

AW: File compare
 
Geht es nur um Textdateien? Ansonsten gibt es ja keine Zeilen.

value is NULL 24. Mai 2011 12:34

AW: File compare
 
^jap ich vergleiche praktisch 2 textdateien!

LG

DeddyH 24. Mai 2011 12:35

AW: File compare
 
Die kannst Du doch einfach zeilenweise einlesen und vergleichen.

stahli 24. Mai 2011 12:46

AW: File compare
 
Nur mal noch bezüglich Gleichheitsprüfung:
Vorausgesetzt, die Texdateien sind nicht zu groß, könnte man sie einfach in 2 TStringList laden und auf
Delphi-Quellcode:
SL1.Text = SL2.Text
prüfen. Zumindest wäre das ein recht unkomplizierter Weg.

DeddyH 24. Mai 2011 12:47

AW: File compare
 
Damit bekommst aber keine Zeilennummer bei evtl. Unterschieden ;)

value is NULL 24. Mai 2011 13:00

AW: File compare
 
so in etwa?

ich mein sieht grauslich aus aber wäre das prinzip richtig?

Delphi-Quellcode:
    i := 0;
    i2 := 0;
    countsum := getlinecount('C:\myfile.txt');
    sl := TStringlist.Create;
    sl2 := TStringlist.Create;
    sl.loadfromfile('C:\myfile.txt');
    sl2.loadfromfile('C:\my2ndFile.txt');
    while i < countsum do begin
        i := i + 1;
        i2 := i2 + 1;
        if sl[i] = sl[i2] then writeln('Kein Unterschied');
    end;
...

DeddyH 24. Mai 2011 13:08

AW: File compare
 
Ungetestet:
Delphi-Quellcode:
function FilesEqual(const First, Second: TFilename; out DiffLine: integer): Boolean;
var
  s1, s2: TStringlist;
  i: integer;
begin
  Result := FileExists(First) and FileExists(Second);
  if Result then
    begin
      s1 := TStringlist.Create;
      try
        s1.LoadFromFile(First);
        s2 := TStringlist.Create;
        try
          s2.LoadFromFile(Second);
          i := 0;
          while (i < s1.Count) and (i < s2.Count) do
            begin
              Result := s1[i] = s2[i];
              if not Result then
                begin
                  DiffLine := i;
                  i := s1.Count;
                end;
              inc(i);
            end;
        finally
          s2.Free;
        end;
      finally
        s1.Free;
      end;
    end;
end;

himitsu 24. Mai 2011 13:29

AW: File compare
 
Delphi-Quellcode:
  Result := FileExists(First) and FileExists(Second);
  if Result then
    begin
      s1 := TStringlist.Create;
      try
        s2 := TStringlist.Create;
        try
          s1.LoadFromFile(First);
          s2.LoadFromFile(Second);
          Result := s1.Count = s2.Count
          if Result then
            begin
              i := 0;
              while (i < s1.Count) and (i < s2.Count) do
                begin
                  Result := s1[i] = s2[i];
                  if not Result then
                    begin
                      DiffLine := i;
                      Break;
                    end;
                  inc(i);
                end;
            end
          else
            DiffLine := Min(s1.Count, s2.Count);
        finally
          s2.Free;
        end;
      finally
        s1.Free;
      end;
    end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 Uhr.
Seite 2 von 6     12 34     Letzte »    

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