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 24-10-2007
kapullok_2006 kapullok_2006 is offline
Miembro
 
Registrado: mar 2007
Posts: 90
Poder: 18
kapullok_2006 Va por buen camino
Unhappy borrar archivos de un directorio

He visto los trucos del clubdelphi y me dan errores al compilarlos.
Uso delphi 6. ¿sabéis alguna idea para encaminarme?


Saludos.

Responder Con Cita
  #2  
Antiguo 24-10-2007
Avatar de paldave
paldave paldave is offline
Miembro
 
Registrado: ago 2007
Ubicación: Uruguay
Posts: 148
Poder: 17
paldave Va por buen camino
Prueba con esto:
Código Delphi [-]
function GetSubDirectories(Directory:String):TStrings;
var
  r:TSearchRec;
  h:Integer;
begin
  result:=TStringList.Create;
  result.Clear;
  if not DirectoryExists(Directory) then
    exit;

  Directory:=IncludeTrailingBackSlash(Directory);
  h:=FindFirst(Directory+'*.*',$10, r);
  if h<>0 then
  begin
    FindClose(r);
    exit;
  end;
  FindNext(r); //Salta el directorios '.' y '..'

  repeat
    h:=FindNext(r);
    if h<>0 then break;
    if (r.Attr and $10) =0 then continue;
    result.Add(r.Name);
  until false;
  FindClose(r);
end;

function GetFileNames(Directory:String; Filter:String='*.*'):TStrings;
var
  r:TSearchRec;
  h:Integer;
begin
  if not DirectoryExists(Directory) then
    exit;

  result:=TStringList.Create;
  result.Clear;
  Directory:=IncludeTrailingBackSlash(Directory);
  h:=FindFirst(Directory+Filter,$10, r);
  if h<>0 then
  begin
    FindClose(r);
    exit;
  end;

  while (r.Name='.') or (r.Name='..') do
    h:=FindNext(r); //Salta los directorios '.' y '..'

  while h=0 do
  begin
    if (r.Attr and $10)<>0 then
    begin
      h:=FindNext(r);
      continue;
    end;
    result.Add(r.Name);
    h:=FindNext(r);
  end;
  FindClose(r);
end;


function Deltree(Directory:String;ConfirmForEachFile:Boolean=False;InformErrors:Boolean=False):Boolean;
var
  Directories,Files,ExcludedDirectories:TStrings;
  ActualDir:String;
  f:Integer;
  d:Boolean;
begin
  result:=false;
  if not DirectoryExists(Directory) then
    if InformErrors then
      Raise EInOutError.Create(GetErrorString(ERROR_FILE_NOT_FOUND)+' "'+Directory+'".')
    else
      exit;

  ExcludedDirectories:=TStringList.Create;
  repeat
    ActualDir:=Directory;
    Directories:=GetSubDirectories(ActualDir);
    f:=0;
    while Directories.Count>f do
    begin
      if ExcludedDirectories.IndexOf(IncludeTrailingBackSlash(ActualDir)+Directories[f])<>-1 then
      begin
        inc(f);
        continue;
      end;
      ActualDir:=IncludeTrailingBackSlash(ActualDir)+Directories[f];
      Directories:=GetSubDirectories(ActualDir);
    end;
    Files:=GetFileNames(ActualDir);
    for f:=0 to Files.Count -1 do
    begin
      if ConfirmForEachFile then
        if MessageBox(Application.Handle,PChar('Delete "'+IncludeTrailingBackSlash(ActualDir)+Files[f]+'?'),'Delete File',MB_YESNO+MB_ICONQUESTION+MB_DEFBUTTON2)=IDNO then
          continue;
      d:=DeleteFile(IncludeTrailingBackSlash(ActualDir)+Files[f]);
      if InformErrors and (d=False) then
         MessageBox(Application.Handle,PChar(GetLastErrorString+' "'+IncludeTrailingBackSlash(ActualDir)+Files[f]+'."'),'Error',MB_ICONEXCLAMATION);
    end;

    Files:=GetFileNames(ActualDir);
    Directories:=GetSubDirectories(ActualDir);
    if (files.Count >0) or (Directories.Count >0) then
    begin
      ExcludedDirectories.Add(ActualDir);
      Continue;
    end;

    if ConfirmForEachFile then
      if MessageBox(Application.Handle,PChar('Delete "'+IncludeTrailingBackSlash(ActualDir)+'?'),'Delete Folder',MB_YESNO+MB_ICONQUESTION+MB_DEFBUTTON2)=IDNO then
      begin
        ExcludedDirectories.Add(ActualDir);
        Continue;
      end;

    d:=RemoveDirectory(Pchar(ActualDir));
    if d=False then
    begin
      ExcludedDirectories.Add(ActualDir);
      if InformErrors then
        MessageBox(Application.Handle,PChar(GetLastErrorString+' "'+ActualDir+'."'),'Error',MB_ICONEXCLAMATION);
    end;
  until ActualDir=Directory;

  result:= not DirectoryExists(Directory);
  ExcludedDirectories.Free;
end;
Espero te sea útil. Saludos
Responder Con Cita
  #3  
Antiguo 19-11-2007
kapullok_2006 kapullok_2006 is offline
Miembro
 
Registrado: mar 2007
Posts: 90
Poder: 18
kapullok_2006 Va por buen camino
Thumbs down Me da errores porque no conoce muchas vbles

¿Habrá que añadir units para que funcione?

te envio archivo para ver los errores.

Saludos,y gracias por tu apoyo.
Responder Con Cita
  #4  
Antiguo 19-11-2007
kapullok_2006 kapullok_2006 is offline
Miembro
 
Registrado: mar 2007
Posts: 90
Poder: 18
kapullok_2006 Va por buen camino
Unhappy

me da errores en:
IncludeTrailingBackSlash
GetErrorString
GetLastErrorString

saludos y gracias.
Responder Con Cita
  #5  
Antiguo 21-11-2007
manolop manolop is offline
Miembro
 
Registrado: may 2005
Posts: 109
Poder: 19
manolop Va por buen camino
Aqui tienes algo sencillo q a mi me funciona
Código Delphi [-]
procedure borrar_directorio_actual(dir:string);
var
  DirInfo: TSearchRec;
  r : Integer;
begin
  dir:=dir+'\';
  r := FindFirst(dir+'*.*', FaAnyfile, DirInfo);
  while r = 0 do  begin
    if ((DirInfo.Attr and FaDirectory <> FaDirectory) and
        (DirInfo.Attr and FaVolumeId <> FaVolumeID)) then
      if DeleteFile(pChar(dir + DirInfo.Name))= false then
       {Si no puede borrar el fichero}
       ShowMessage('No se ha podido eliminar el archivo: '+dir+
                   DirInfo.Name);
    r := FindNext(DirInfo);
  end;
  SysUtils.FindClose(DirInfo);
  if RemoveDirectory(PChar(dir)) = false then
    {Si no puedes borrar el directorio}
   // ShowMessage('Imposible borrar el directorio : '+dir);
end;
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Borrar un directorio con contenido Mariana Varios 9 27-02-2008 09:59:53
borrar archivos d un directorio\subdirectorios segun su extension. No me funciona :( images API de Windows 5 11-06-2007 23:14:30
Metodo para borrar directorio VolaRe Varios 4 25-07-2004 16:29:52
Vaciar el contenido de un directorio (Borrar *.*) Gelmin Varios 1 22-07-2004 20:21:50
Borrar archivos de un directorio Magneto Varios 1 13-08-2003 13:20:34


La franja horaria es GMT +2. Ahora son las 21:41:29.


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