FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
En este caso no queda ningún archivo. El directorio está totalmente vacío y aparece ese error cuando intento borrarlo.
Si, una vez teminada la desinstalación, vuelvo a utilizar el desinstalador entonces ya no me da ningún error y borra todos los subdirectorios. Román, de todas formas, investigaré por el camino que me indicas a ver si resuelvo algo. Gracias |
#2
|
|||
|
|||
Después de borrar los archivos en una carpeta, cambia el directorio a una superior y luego trata de borrar la carpeta en cuestión.
Algo así más o menos: Código:
ChDir('Archivos de programa\La carpeta'); BorrarArchivos; ChDir(Archivos de programa'); BorrarCarpeta('La Carpeta') |
#3
|
|||
|
|||
Marcos, justamente eso es lo que he hecho y no hay manera. De hecho el desinstalador está dos niveles por encima de los diretorios que quiero borrar. Le doy vueltas y más vueltas y no le encuentro el fallo.
Gracias. |
#4
|
||||
|
||||
¿Por qué no nos muestras un poco del código que usas, particularmente de la parte donde da el fallo?
// Saludos pd: si escribes el código por favor usa las etiquetas [delphi] para que quede bien formado. |
#5
|
|||
|
|||
Código:
procedure TForm1.BorrarDirectorios(Sender: TObject); var ListDirCol,ListDirCur:TstringList; ErrorBuscando, n, e:integer; NomDir, DirCol, DirCurs, Path, Path2: string; AtributArchiv: TSearchRec; begin path:= StrSourceDir ; ListDirCol := TStringList.Create; ErrorBuscando:= findFirst(Path + 'coleg*',faDirectory,AtributArchiv); while ErrorBuscando = 0 do begin NomDir:= extractFileName(AtributArchiv.name); ListDirCol.add(NomDir); ErrorBuscando:= findnext(AtributArchiv); end; ListDirCur := TStringList.Create; for n:= 0 to ListDirCol.count - 1 do begin DirCol:= ListDirCol.strings[n]; //se saca el directorio del cole // y se busca el dir del curso academico ErrorBuscando:= findFirst(Path + DirCol + '\C*',faDirectory,AtributArchiv); while ErrorBuscando = 0 do // ej.: C004/005 begin NomDir:= extractFileName(AtributArchiv.name); ListDirCur.add(NomDir); ErrorBuscando:= findnext(AtributArchiv); end; for e:= 0 to ListDirCur.count - 1 do begin DirCurs:= ListDirCur.strings[e]; // se saca del dir del curso academico path2:= Path + DirCol + '\' + DirCurs + '\'; // ej.: C004005 if DirExist(path2 + 'Cast') then BorraDir(path2 + 'Cast'); if DirExist(path2 + 'Val') then BorraDir(Path2 + 'Val'); ChDir(path); path2:= path + DirCol + '\' + DirCurs; BorraDir(Path2); end; end; FindClose(AtributArchiv); ListDirCol.free; // se libera la mem utilizada x ListDirCol, ListDirCur ListDirCur.free; end; Previamente se han borrado todos los archivos del programa. Después intenta borrar los directorios vacíos, comenzando por los de nivel más bajo. No se produce ningún error porque los deshabilito con {$I-} pero no se borran los subdirectorios. Los niveles de directorios son: -Directorio del programa (en él está el desinstalador. Es el único que no se debe borrar) -COLEG1 (Directorio hijo) -C004005 (Dir hijo de coleg1) -CAST, VAL (dir hijos de C004005) Un saludo |
#6
|
||||
|
||||
A ver, me cuesta trabajo seguir tu código en estos momentos por lo que te voy a proponer una alternativa al método que estás usando y está en este mensaje http://www.clubdelphi.com/foros/show...84&postcount=3
// Saludos |
#7
|
|||
|
|||
Román, la alternativa que me propones ya la había probado antes y tampoco funcionó.
Me daba un error indicando que el directorio está compartido o en uso y ni una cosa ni otra. De todas formas, gracias. Seguiré dándole vueltas hasta que encuentre la causa. No me suelo dar por vencido fácilmente. // Saludos. |
|
|
|