Procedimiento que compara dos ficheros del disco
0000-00-00 00:00:00
function CompararFicheros(const a : string; const b : string) : boolean; var f,g : file; buf1,buf2 : array[1..2000] of byte; i,leidof,leidog : integer; todobien : boolean; begin result:=true; assignfile(f,a); reset(f,1); assignfile(g,b); reset(g,1); if filesize(f)filesize(g) then result:=false else begin todobien:=true; leidof:=0; leidog:=0; while todobien do begin blockread(f,buf1,sizeof(buf1),leidof); blockread(g,buf2,sizeof(buf2),leidog); if (leidof=0) or (leidog=0) or (leidofleidog) then todobien:=false else for i:=1 to leidof do if buf1[i]buf2[i] then begin result:=false; todobien:=false; end; end; end; closefile(g); closefile(f); end;
Subiendo el valor que define el tamaño de los buffers de lectura se puede acelerar el proceso, pero prefiero dejarlo asi para ahorrar
memoria... pero claro todo va en gustos, para los que tengan prisa, subid el valor
El codigo en si no tiene gran cosa, es abrir dos ficheros simultaneamente y leerlos en bloques de tamaño igual al tamaño de los buffers. Primero comparo el tamaño para asegurar que son iguales, ya que si no es asi, no tiene sentido compararlos: seran diferentes.
A destacar un par de cosas: no tiene chequeo de si los ficheros existen o no, y que a efectos de comparacion solo usa el contenido de los ficheros, pero no las fechas,atributos, etc