Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 27-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Paco Fernandez.

Si deseas que se borren los archivos de determinadas carpetas sin mediar intervención del usuario, no hay necesidad de usar ListBox, digamos que los únicos componentes visuales requeridos son dos TEdit para ingresar las rutas a las carpetas.

Lo que no especificaste y no tengo en claro, es si queres:
  1. Borrar de la carpeta A todos los archivos que no esten en la carpeta B.
  2. Borrar de la carpeta B todos los archivos que no esten en la carpeta A.
  3. Borrar de la carpeta A y de la carpeta B los archivos que no están en ambas carpetas.
Por lo que voy directo al tercer caso ya que contempla los dos anteriores. Una forma podría ser:
Código Delphi [-]
(* Cargar archivos al TStrings pasado en TSFiles *)
procedure AddFiles(ADir: string; TSFiles: TStrings);
var
  SR: TSearchRec;
begin
  TSFiles.Clear;
  ADir:= IncludeTrailingPathDelimiter(ADir); // Incluir backslash
  // Busqueda
  if FindFirst(ADir + '*.*', faArchive, SR)= 0 then
  repeat
    TSFiles.Add(Adir + SR.Name); // Añadir
  until FindNext(SR) <> 0;
end;

(* Borrar archivos de Dir1 que no esten en Dir2 y de Dir2 que no esten en Dir1 *)
procedure DeleteDistinctFiles(Dir1, Dir2: string);
var
  TS1, // almacena archivos de Dir1
  TS2, // almacena archivos de Dir2
  ToDelete: TStrings; // almacena archivos a borrar
  i,j: Integer;
  Equal: Boolean;
begin
  TS1:= TStringList.Create;
  TS2:= TStringList.Create;
  ToDelete:= TStringList.Create;
  try
    // Cargar archivos Dir1 y Dir2
    AddFiles(Dir1, TS1);
    AddFiles(Dir2, TS2);
    // Encontrar archivos de Dir1 que no estan en Dir2
    for i:= 0 to TS1.Count-1 do
    begin
      Equal:= False;
      for j:= 0 to TS2.Count-1 do
        if ExtractFileName(TS1[i]) = ExtractFileName(TS2[j]) then
          Equal:= True;
      if not Equal then ToDelete.Add(TS1[i]); // agregarlo para borrar
    end;
    // Encontrar archivos de Dir2 que no estan en Dir1
    for i:= 0 to TS2.Count-1 do
    begin
      Equal:= False;
      for j:= 0 to TS1.Count-1 do
        if ExtractFileName(TS2[i]) = ExtractFileName(TS1[j])then
          Equal:= True;
      if not Equal then ToDelete.Add(TS2[i]); // agregarlo para borrar
    end;
    // Borrar archivos seleccionados
    for i:= 0 to ToDelete.Count-1 do
      DeleteFile(ToDelete[i]);
  finally
    TS1.Free;
    TS2.Free;
    ToDelete.Free;
  end;
end;

Llamada ejemplo:
Código Delphi [-]
   DeleteDistinctFiles(Edit1.Text, Edit2.Text);

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
 



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda con una comparacion if danielmj Varios 11 21-02-2012 18:31:11
comparación de text lisc_dla Varios 2 02-08-2011 20:04:15
Ayuda para hacer un algoritmo de busqueda y comparacion JoAnCa Varios 7 23-12-2008 22:55:28
Ayuda comparacion campos AdoQuery Jaros SQL 4 27-05-2008 19:54:58
comparación de fechas Nelly Varios 2 27-10-2005 17:30:42


La franja horaria es GMT +2. Ahora son las 14:43:02.


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