Avatar billede jaweni Nybegynder
16. juli 2003 - 10:11 Der er 7 kommentarer og
1 løsning

Sammenligne filer

Jeg vil i et program gerne kunne sammenligne filer på fx. en diskette op imod filer af samme navn på HD for at kunne slette unødige filer.

Er der en effektiv algoritme, der klarer dette?
Avatar billede Slettet bruger
16. juli 2003 - 10:45 #1
Avatar billede nop Nybegynder
17. juli 2003 - 15:45 #2
Tag 2'eren, for 1'eren bruger meget hukommelse ved store filer.
Avatar billede jaweni Nybegynder
18. juli 2003 - 22:37 #3
nop:
Hvordan så med sammenligning af størrelse (antal bytes), dato, osv?
Der må være procedurer/funktioner, der klarer det arbejde.
Hvor finder jeg kode til det? På forhånd tak! Jan
Avatar billede Slettet bruger
20. juli 2003 - 16:25 #4
function FilesAreEqual(const File1, File2: TFileName): Boolean;
const 
  BlockSize = 65536;
var 
  fs1, fs2: TFileStream; 
  L1, L2: Integer; 
  B1, B2: array[1..BlockSize] of Byte;
begin 
  Result := False; 
  fs1 := TFileStream.Create(File1, fmOpenRead or fmShareDenyWrite);
  try   
    fs2 := TFileStream.Create(File2, fmOpenRead or fmShareDenyWrite);
    try     
      if fs1.Size = fs2.Size then 
      begin       
        while fs1.Position < fs1.Size do 
        begin         
          L1 := fs1.Read(B1[1], BlockSize);
          L2 := fs2.Read(B2[1], BlockSize);
          if L1 <> L2 then 
          begin           
            Exit;
          end;         
          if not CompareMem(@B1[1], @B2[1], L1) then Exit;       
        end;       
        Result := True;     
      end;   
    finally     
      fs2.Free;   
    end; 
  finally   
    fs1.Free; 
  end;
end;
Avatar billede hreiff Nybegynder
25. juli 2003 - 14:03 #5
Den kode hejhej henviser til checker filstørrelsen inden den går igang med at sammenligne.
Avatar billede jaweni Nybegynder
01. august 2003 - 22:16 #6
Hej hejhej,

jeg er ikke så god til at gennemskue kode.
Men koden, du har givet mig, checker den for: dato, tid, osv?

For mig at se checker din kode kun for filstørrelse og ikke andet!
Avatar billede Slettet bruger
02. august 2003 - 09:46 #7
Den sammenligner størrelse og indhold.
Avatar billede athlon-pascal Juniormester
13. august 2003 - 17:36 #8
Jaweni -> Jeg vil anbefale dig først at sammenligne dato, tid, etc. Hvis de da ligner hinanden, så brug hejhejs funktion. På den måde kan du spare både tid og resourcer, hvis du skal løbe mange filer igennem :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester