images
27-08-2004, 17:40:22
Hola :)
Investigando sobre como eliminar archivos de un determinado directorio y por la extension del archivo he encontrado estos dos ejemplos(uno en trucomania(gracias de nuevo ;) y otro aqui):
//Añade 'ShellApi' en el uses de tu form
Function ALaPapelera(Fichero:string):boolean;
var
FileOp:TSHFileOpStruct;
begin
if FileExists(Fichero) Then
Begin
FillChar(FileOp,SizeOf(FIleOp),#0);
With FileOp do
Begin
Wnd:=Application.Handle;
WFunc:=FO_DELETE;
pFrom:=PChar(Fichero+#0#0);
fFlags:=FOF_SILENT or FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
End;
Result:=(ShFileOperation(FileOp)=0);
End Else
Result:=False;
End;
//Ejemplo de llamada
Procedure FTForm1.Button1Click(Sender:TObject);
Begin
if Not ALaPapelera('C:\Pruebas\Fichero.txt') Then
ShowMessage('No se pudo borrar el fichero');
End;
Pues resulta que este codigo me funciona, elimina el archivo pero me muestra el Message 'No
se pudo....'
Esto me ocurre en Windows XP.
Investigando mas encontre este otro que es mas lo que yo quiero: Eliminar de un directorio
todos los archivos de una determinada extension. Aqui va el codigo:
procedure TForm1.Button2Click(Sender:TObject);
Var
MiDir:String; // Donde están los ficheros
MisFicheros:String; //Cadena que contiene el nombre con comodines
RBusqueda:TSearchRec; //Está definida en la unidad SysUtils
Begin
MiDir:='C\CamTexto\Server\';
MisFicheros:='_*.lck';
If FindFirst(MiDir+MisFicheros,faanyfile, RBusqueda)=0 Then
Begin
DeleteFile(PChar(MiDir+RBusqueda.Name)); //Borro el primero si existe
//Busco todos los del mismo patrón y los borro
While FindNext(RBusqueda)=0 Do
Begin
DeleteFile(PChar(MiDir+RBusqueda.Name));
End;
//Ambas funciones devuelven 0 si la búsqueda tiene éxito
End;
End;
Este codigo no me funciona :( no me borra nada ¿por que? Este es el que me interesa de verdad
por el tema de la aplicacion en red con paradox q estoy haciendo. Para eliminar los archivos
de bloqueo en caso de que la aplicacion no se haya cerrado correctamente.
Lo genial seria poder indicarle un directorio principal(el de tu aplicacion) y borrara todos
los *.XXX de ese directorio y todos sus subdirectorios.
Investigando sobre como eliminar archivos de un determinado directorio y por la extension del archivo he encontrado estos dos ejemplos(uno en trucomania(gracias de nuevo ;) y otro aqui):
//Añade 'ShellApi' en el uses de tu form
Function ALaPapelera(Fichero:string):boolean;
var
FileOp:TSHFileOpStruct;
begin
if FileExists(Fichero) Then
Begin
FillChar(FileOp,SizeOf(FIleOp),#0);
With FileOp do
Begin
Wnd:=Application.Handle;
WFunc:=FO_DELETE;
pFrom:=PChar(Fichero+#0#0);
fFlags:=FOF_SILENT or FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
End;
Result:=(ShFileOperation(FileOp)=0);
End Else
Result:=False;
End;
//Ejemplo de llamada
Procedure FTForm1.Button1Click(Sender:TObject);
Begin
if Not ALaPapelera('C:\Pruebas\Fichero.txt') Then
ShowMessage('No se pudo borrar el fichero');
End;
Pues resulta que este codigo me funciona, elimina el archivo pero me muestra el Message 'No
se pudo....'
Esto me ocurre en Windows XP.
Investigando mas encontre este otro que es mas lo que yo quiero: Eliminar de un directorio
todos los archivos de una determinada extension. Aqui va el codigo:
procedure TForm1.Button2Click(Sender:TObject);
Var
MiDir:String; // Donde están los ficheros
MisFicheros:String; //Cadena que contiene el nombre con comodines
RBusqueda:TSearchRec; //Está definida en la unidad SysUtils
Begin
MiDir:='C\CamTexto\Server\';
MisFicheros:='_*.lck';
If FindFirst(MiDir+MisFicheros,faanyfile, RBusqueda)=0 Then
Begin
DeleteFile(PChar(MiDir+RBusqueda.Name)); //Borro el primero si existe
//Busco todos los del mismo patrón y los borro
While FindNext(RBusqueda)=0 Do
Begin
DeleteFile(PChar(MiDir+RBusqueda.Name));
End;
//Ambas funciones devuelven 0 si la búsqueda tiene éxito
End;
End;
Este codigo no me funciona :( no me borra nada ¿por que? Este es el que me interesa de verdad
por el tema de la aplicacion en red con paradox q estoy haciendo. Para eliminar los archivos
de bloqueo en caso de que la aplicacion no se haya cerrado correctamente.
Lo genial seria poder indicarle un directorio principal(el de tu aplicacion) y borrara todos
los *.XXX de ese directorio y todos sus subdirectorios.