Delphi-PRAXiS
Seite 1 von 6  1 23     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)

value is NULL 24. Mai 2011 10:45

File compare
 
Hi Leutz

Ich weiß es gibt schon einige Threads darüber aber ich habe noch keine brauchbare Lösung gefunden.

Ich will praktisch 2 Files miteinander vergleichen und sobald sich die eine von der anderen in irgendeiner Art und Weise unterscheidet (Inhaltlich) reagieren?

Wie könnte das realisiert werden?

LG

DeddyH 24. Mai 2011 10:48

AW: File compare
 
Eine Möglichkeit: beide Dateien in jeweils einen Stream einlesen und beide Streams mit CompareMem vergleichen.

value is NULL 24. Mai 2011 10:54

AW: File compare
 
dh mit:

Delphi-Quellcode:
 Stream := TFileStream.Create('c:\Temp\StreamTest.Datei', fmOpenRead);
auslesen und dann zB mit folgender funktion vergleichen:

Delphi-Quellcode:
function CompareMem(P1, P2: PChar; Length: Integer): Boolean;
begin
  Result := False;
  while Length > 0 do
    if P1^ = P2^ then
    begin
      Dec(Length);
      Inc(P1);
      Inc(P2);
    end else Exit;
  Result := True;
end;
?

LG

Luckie 24. Mai 2011 10:55

AW: File compare
 
Erstelle von beiden Dateien eine Hash und vergleiche diesen.

mleyen 24. Mai 2011 10:59

AW: File compare
 
Thread: http://www.delphipraxis.net/50896-ei...n-gesucht.html
Ergebnis: http://www.delphipraxis.net/51018-da...rgleichen.html

Funzt ganz gut. :-D

value is NULL 24. Mai 2011 11:00

AW: File compare
 
@ Lucki

mit der MD5.pas zB aus http://www.koders.com/delphi/fid1C4B...6FB7FC2BA.aspx

ich nehme mal an ich muss MDFile aufrufen und anschließend MD5Match?

Leider noch nicht mit sowas zu tun gehabt !

LG

DeddyH 24. Mai 2011 11:04

AW: File compare
 
Ungetestet:
Delphi-Quellcode:
function FilesAreEqal(const First, Second: TFilename): Boolean;
var
  FirstStream, SecondStream: TMemoryStream;
begin
  Result := FileExists(First) and FileExists(Second);
  if Result then
    begin
      FirstStream := TMemoryStream.Create;
      try
        SecondStream := TMemoryStream.Create;
        try
          FirstStream.LoadFromFile(First);
          SecondStream.LoadFromFile(Second);
          Result := FirstStream.Size = SecondStream.Size;
          if Result then
            begin
              FirstStream.Position := 0;
              SecondStream.Position := 0;
              Result := CompareMem(FirstStream.Memory, SecondStream.Memory);
            end;
        finally
          SecondStream.Free;
        end;
      finally
        FirstStream.Free;
      end;
    end;
end;

p80286 24. Mai 2011 11:45

AW: File compare
 
Für die ganz schnellen, erst die Größe der beiden Dateien vergleichen!

Gruß
K-H

Deep-Sea 24. Mai 2011 11:48

AW: File compare
 
@DeddyH:
Dann lade mal bitte zwei 20GB große Dateien in den Arbeitsspeicher :P


PS: Hashen lohnt sich eig. erst, wenn man mehrere Dateien mit einer vergleichen will.

value is NULL 24. Mai 2011 12:05

AW: File compare
 
ich mache es jetzt mit der FileCompare unit!
Funktioniert perfekt!

danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 Uhr.
Seite 1 von 6  1 23     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