Un saludo a los amigos del foro, les pido ayuda con lo siguiente tengo una aplicacion que genera varias tablas temporales y es necesario eliminarlas al terminar la ejecucion del programa, el tema que he probado con FERASE(), DELETE FILE y otro comandos pero lo unico que me funciona es eliminarlas usando la API de windows ShFile() el problema es que siempre esta pidiendo confirmacion de que va a eliminar multiples archivos y el parametro FOF_NOCONFIRMATION, no funciona: esto es lo que defino en la cabezera del programa
#define FO_DELETE 0x0003
#define FOF_ALLOWUNDO 0x0040
#define FOF_NOCONFIRMATION 0x0010
y el programa hace esto:
FUNCTION Borra( cFile )
ShFile( GetActiveWindow(), FO_DELETE, cFile + Chr( 0 ), Nil, nAnd( FOF_ALLOWUND, FOF_NOCONFIRMATION))
RETURN .T.
la idea seria borrar estos archivos temporales sin que el usuario sepa y que ojala no los envié a la papelera de reciclaje. Por lo que he leído en este foro con este código debiera funcionar pero no PASA NADA...!!
GRACIAS...
Eliminar archivos con la API de Windows ShFile()
- Armando
- Posts: 3275
- Joined: Fri Oct 07, 2005 8:20 pm
- Location: Toluca, México
- Been thanked: 2 times
- Contact:
Re: Eliminar archivos con la API de Windows ShFile()
VPozo:
Yo lo hago así y me funciona
Solo hay que asegurarse de que el archivo esta cerrado y que
el path es el correcto
Saludos
Yo lo hago así y me funciona
Code: Select all | Expand
DELETE FILE (cPathFiles)+"\"+ALLTRIM(cArchivo)
Solo hay que asegurarse de que el archivo esta cerrado y que
el path es el correcto
Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Re: Eliminar archivos con la API de Windows ShFile()
Gracias compañero. Pero el comando DELETE FILE el ERASE o el FERASE(), no borran el archivo no me da ningún error solo no los borra quizás por que es una unidad NFTS no se, es raro, como te comentaba que con la Api de windows ningún drama, pero el tema de la confirmación es molesto, ademas que el usuario pude interpretar el mensaje como que va ha eliminar información del sistema y siempre la va poner que "NO". Le voy a dar un par de vueltas mas ha este tema y si no voy a terminar haciendo un archivo .bat que los borre y lo llamo desde la aplicacion ( DEL "TMP*.DBF") pero no es muy profecional ya que lo pueden borrar o cambiar ya que es facil de editar.
Bueno les dejo la inquietud Gracias..
Bueno les dejo la inquietud Gracias..
- Lautaro
- Posts: 327
- Joined: Fri Oct 07, 2005 2:44 pm
- Location: Osorno, Chile
- Has thanked: 3 times
- Been thanked: 4 times
- Contact:
Re: Eliminar archivos con la API de Windows ShFile()
Vpozo:
Que atributos tienen los archivos que deseas borrar, a lo mejor son de solo lectura y ese es el problema.
Atte.,
Lautaro Moreira
Que atributos tienen los archivos que deseas borrar, a lo mejor son de solo lectura y ese es el problema.
Atte.,
Lautaro Moreira
- Willi Quintana
- Posts: 1025
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
Re: Eliminar archivos con la API de Windows ShFile()
Hola, No importa que tipo de unidadsea (FAT,FAT32,NTFS),,, yo lo hago asi:
Code: Select all | Expand
.
..
...
nNum := -1
cfile := CurDrive() + ":\" + Curdir() + "\TMP\xxx.tmp"
IF FILE(cFile)
nNUm := FERASE(cFile)
EndIf
Return(nNum = 0) // si nNum es 0, se borro correctamente
...
..
.
- jrestojeda
- Posts: 601
- Joined: Wed Jul 04, 2007 3:51 pm
- Location: Buenos Aires - Argentina
Re: Eliminar archivos con la API de Windows ShFile()
Hola amigo...
A mi esto me funciona correctamente:
Lo que hago es copiarme dos archivos desde el servidor a la PC local y los uso como temporales, al finalizar todo el proceso los elimino.
Espero te sirva.
A mi esto me funciona correctamente:
Lo que hago es copiarme dos archivos desde el servidor a la PC local y los uso como temporales, al finalizar todo el proceso los elimino.
Code: Select all | Expand
Private TEMPOB,TEMPON,NomA
NomA:=CurDrive()+":\T"+SUBSTR(TIME(),4,2)+SUBSTR(TIME(),7,2)
TEMPOB:=NomA+".DBF"
COPY FILE ("\\Servidor\Datos\INGCOMP.DBF") TO &TEMPOB
TEMPON:=NomA+".CDX"
COPY FILE ("\\Servidor\Datos\INGCOMP.CDX") TO &TEMPON
USE &TEMPOB ALIAS (cAliasIng) NEW
AdsEnableEncryption(cKey)
DATABASE oDbfIng
oDbfIng:bEoF:=nil
oDbfIng:SetOrder(2)
oDbfIng:GoTop()
Base :=TEMPOB
Indice:=TEMPON
// Aquí está todo el proceso...
// Al finalizar el proces borro así
FErase(Base)
FErase(Indice)
Espero te sirva.
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Re: Eliminar archivos con la API de Windows ShFile()
Primero que nada Gracias a todos los que demostraron interes en el tema planteado y la verdad que la solucion era sencilla luego de hacer todas las pruebas que me indicaron me di cuenta que el comando FERASE() no acepta comodines osea si hago esto Ferase("TMP*.DBF") no borra los archivos por que no acepta el comodin "*" pero si los elimino uno por uno ejemplo Ferase("TMP32651.DBF"), lo borra al toque.
Gracias nuevamente
Gracias nuevamente

- jrestojeda
- Posts: 601
- Joined: Wed Jul 04, 2007 3:51 pm
- Location: Buenos Aires - Argentina
Re: Eliminar archivos con la API de Windows ShFile()
Perfecto... Me alegro saber que te funcionó!
Saludos!
Saludos!
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda