Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-11-2005
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Comparar archivos

Hola mi pregunta es si existe alguna función por código para poder comparar el contenido de dos archivos, de cualquier tipo de extensión o del mayor numero de extensiones posibles, si alguien conoce alguna función o como se podría hacer me resultaría de gran ayuda.
Gracias
pd. No me interesa que compare las fechas de creacion o de modificacion de los archivos o el nombre de estos, solamente el contenido.
Responder Con Cita
  #2  
Antiguo 02-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No estoy seguro, pero, ¿no te valdría obtener el "Hash" de un determinado archivo? Me explico. Si no me equivoco el "Hash" de un archivo es único, incluso si se comparan dos archivos con el mismo nombre, por poner un caso. Ya digo que no estoy muy puesto en esto, como en casi nada. Desde luego, con los componentes DCPcrypt Cryptographic Component Library, gratuitos y de código abierto (y probablemente encuentres otros componentes) puedes hacer lo dicho, en inglés, "File hashing", de tal forma que podrías comparar si dos archivos tienen el mismo "Hash". En la documentación (documento HTML de nombre "Hashes.html") tienes un ejemplo completo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 02-11-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Es algo básico, pero tiene que funcionar (Probalo, lo escribí e hice dos pruebas sencillas nada mas):
Código Delphi [-]
function CompareStreams(AStream1, AStream2: TStream): boolean;
var
  Buff1, Buff2: Pointer;
  iCount: LongInt;
const
  BUFFER_SIZE = 1024*4;
begin
  if AStream1.Size <> AStream2.Size then
    Result := False
  else
  begin
    Result := True;
    GetMem(Buff1, BUFFER_SIZE);
    GetMem(Buff2, BUFFER_SIZE);
    try
      repeat
        iCount := AStream1.Read(Buff1^, BUFFER_SIZE);
        AStream2.Read(Buff2^, BUFFER_SIZE);
        if not CompareMem(Buff1, Buff2, iCount) then
        begin
          Result := False;
          break;
        end;
      until iCount < BUFFER_SIZE;
    finally
      FreeMem(Buff1);
      FreeMem(Buff2);
    end;
  end;
end;

function CompareFiles(AFileName1, AFileName2: TFileName): boolean;
var
  FS1, FS2: TFileStream;
begin
  FS1 := TFileStream.Create(AFileName1, fmOpenRead + fmShareDenyNone);
  try
    FS2 := TFileStream.Create(AFileName2, fmOpenRead + fmShareDenyNone);
    try
      Result := CompareStreams(FS1, FS2);
    finally
      FS2.Free;
    end;
  finally
    FS1.Free;
  end;
end;

Código Delphi [-]
  if CompareFiles('C:\FILE1.TXT', 'C:\FILE2.TXT') then
    Caption := 'Los archivos son iguales'
  else
    Caption := 'Los archivos son diferentes';

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 02-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Sí que parece funcionar Federico, muy curioso, muchas gracias.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:44:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi