Autor
|
Tema: Eliminar archivo con un command desde el FilelistBox (Leído 5,595 veces)
|
Enemy
Desconectado
Mensajes: 285
Que vuelva el personal de hace 15 años al foro!
|
Bueno, mi problema es el siguiente: Estoy programando un explorador con un par de opciones, basico. pero no logro que los botones cumplan con su funcion, borrar, abrir, quitar atributos, etc. Quiero seleccionar un archivo de un filelistbox (ya teniendo el drive y el dir) y dar en el boton ejecutar o borrar, pero no logro enviarle la variable a la funcion "kill" o "Deletefile" del objeto FSO para que cumpla con su trabajo Private Sub Form_Load() Dim Ruta As String Ruta = File1.Path & "\" & File1.FileName File1.Pattern = "*.exe;*.bat;*.ini;*.com;*.vbs" End Sub
------------------------------------------------------
Private Sub CmdBorrar_Click() Kill Ruta, True End Sub O sino asi: Private Sub Form_Load() Dim Fso as Object Set Fso = CreateObject("Scripting.FileSystemObject") Ruta = File1.Path & "\" & File1.FileName File1.Pattern = "*.exe;*.bat;*.ini;*.com;*.vbs" End Sub
--------------------------------------------------------------
Private Sub CmdBorrar_Click() fso.deletefile Ruta, True End Sub
Que esta mal? o que me falta? y si, probe tambien poniendo "Ruta = File1.Path & "\" & File1.FileName" en el "Private Sub File1_click()" pero nada.. Gracias.. SALUD.O.S
|
|
« Última modificación: 26 Septiembre 2009, 01:30 am por Bakura182 »
|
En línea
|
|
|
|
seba123neo
|
Hola, este codigo: Ruta = File1.Path & "\" & File1.FileName
lo deberias ejecutar en el evento clik del filelistbox, no en el load del formulario, ya que si cambias de archivo no pasa nada, el load se ejecuta al inicio no tiene nada que ver. y la variable Ruta debe estar declarada arriba local en el formulario no en el load.aparte de eso debes hacer un refresh sino nunca ves si borraste o no...este codigo te debe funcionar: Dim Ruta As String Private Sub Command1_Click() If File1.ListIndex = -1 Then Exit Sub Kill Ruta File1.Refresh End Sub Private Sub File1_Click() Ruta = File1.Path & File1.FileName End Sub Private Sub Form_Load() File1.Pattern = "*.exe;*.bat;*.ini;*.com;*.vbs" End Sub
saludos.
|
|
|
En línea
|
|
|
|
Enemy
Desconectado
Mensajes: 285
Que vuelva el personal de hace 15 años al foro!
|
Si men, lo del refresh y un par de cosas mas las tengo claras pero solo posteo en donde se que hay errores no el code completo. Sabes, me seguia tirando error, me marca en amarillo el "Kill Ruta" prove agregando la variable en el cmd antes del if y se dio ^^ Private Sub CmdBorrar_Click() Ruta = File1.Path & File1.FileName If File1.ListIndex = -1 Then Exit Sub Kill Ruta File1.Refresh End Sub Porque desde el "File1_Click" no quiere funcar. Gracias
|
|
|
En línea
|
|
|
|
Enemy
Desconectado
Mensajes: 285
Que vuelva el personal de hace 15 años al foro!
|
Perdon por el doble post pero siguen habiendo un par de errores. 1 por ejemplo cuando le asigno la ruta a la variable queda asi: Ruta = File1.path & File1.filename
O sea: C:\Miarhivo.ext Ese coda para borrar archivos dentro de una unidad sin estar dentro de una carpeta, funciona pero... si quiero borrar un archivo en otra ubicacion: "F:\mis archivos\blabla\redtube.ext" Ruta = File1.path & File1.filename
Esto devuelve: F:\mis archivos\blabla ---> (sin el signo "\" al final, eso da error, archivo no encontrado)
En total asi: F:\mis archivos\[b]blablaredtube.ext[/b] (sin el "\") y si hago esto: Ruta = File1.path & "\" & File1.filename
Ahi si funcionaria: F:\mis archivos\blabla\redtube.ext Como soluciono este problema de rutas?? 2 Estando bien la ruta, no me deja eliminar los archivos siendo que otros si elimina... mejor explico a este despues, ya es tarde aqui. Gracias de nuevo.
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
setattr()
kill() '// No borra archivo ocultos o similares/derivados como los abiertos por ejemplo, setattr() ejecuta antes los pones en modo normal y despues le pasas el kill()
Espero sea eso lo de que algunos archivos los borra y otros no.!¡
Dulces Lunas.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
burbu_1
Desconectado
Mensajes: 159
hamen gaoz
|
Perdon por el doble post pero siguen habiendo un par de errores. 1 por ejemplo cuando le asigno la ruta a la variable queda asi: Ruta = File1.path & File1.filename
O sea: C:\Miarhivo.ext Ese coda para borrar archivos dentro de una unidad sin estar dentro de una carpeta, funciona pero... si quiero borrar un archivo en otra ubicacion: "F:\mis archivos\blabla\redtube.ext" Ruta = File1.path & File1.filename
Esto devuelve: F:\mis archivos\blabla ---> (sin el signo "\" al final, eso da error, archivo no encontrado)
En total asi: F:\mis archivos\[b]blablaredtube.ext[/b] (sin el "\") y si hago esto: Ruta = File1.path & "\" & File1.filename
Ahi si funcionaria: F:\mis archivos\blabla\redtube.ext Como soluciono este problema de rutas?? 2 Estando bien la ruta, no me deja eliminar los archivos siendo que otros si elimina... mejor explico a este despues, ya es tarde aqui. Gracias de nuevo. Para el problema 1... If Right(File1.Path, 1) <> "\" Then ruta = File1.Path & "\" & File1.FileName Else ruta = File1.Path & File1.FileName End If
Saludos.
|
|
|
En línea
|
|
|
|
Enemy
Desconectado
Mensajes: 285
Que vuelva el personal de hace 15 años al foro!
|
setattr()
kill() '// No borra archivo ocultos o similares/derivados como los abiertos por ejemplo, setattr() ejecuta antes los pones en modo normal y despues le pasas el kill()
Espero sea eso lo de que algunos archivos los borra y otros no.!¡
Dulces Lunas.
Tengo esa opcion tambien, la volver visibles archivos del sistema-ocultos, pero no me habia fijado en eso. Gracias BlackZ Gracias burbu tambien, no se me hubiera ocurrido usar el right >.< Pero Black, mira. testeo mi programa con arhivos ini, los pongo en "C:\" como "ACA.ini" y con un script le doy atributos "39" perfecto, se oculto como del systema, a la hora de sacarle los atributos con el boton del programa, tambien, cumple con la funcion, pero cuando a ese archivo lo quiero eliminar sale: Error 75 "Error de acceso a ruta o archivo" No entiendo que esta mal, no hay nada mal, no tiene atributos, la ruta es la correcta y la funcion Kill cumple su funcion, entonces?? Private Sub CmdBorrar_Click() If Right(File1.Path, 1) <> "\" Then Ruta = File1.Path & "\" & File1.FileName Else Ruta = File1.Path & File1.FileName End If If File1.ListIndex = -1 Then Exit Sub Kill Ruta File1.Refresh End Sub ------------------------------------------------ Private Sub CmdAtbs_Click() If Right(File1.Path, 1) <> "\" Then Ruta = File1.Path & "\" & File1.FileName Else Ruta = File1.Path & File1.FileName End If If File1.ListIndex = -1 Then Exit Sub Set Fso = CreateObject("Scripting.FileSystemObject") Set Var1 = Fso.GetFile(Ruta) Var1.Attributes = -39 File1.Refresh End Sub ?? EDITO: Sera porque el archivo queda en solo lectura? estoy viendo eso.
|
|
« Última modificación: 27 Septiembre 2009, 07:25 am por Bakura182 »
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
intenta poner esto If Right(File1.Path, 1) <> "\" Then ruta = File1.Path & "\" & File1.FileName Else ruta = File1.Path & File1.FileName End If ' // En una linea seria mejor!¡. ruta = File1.Path & iif(Right(File1.Path, 1) <> "\", "\" & File1.FileName, File1.FileName)
' // ' //No cuento con el VB a la mano, cualquier error lo podràs corregir!¡. ' // if dir(ruta,vbarchive)<>"" then setattr ruta,vbnormal kill ruta else ' Solo para debug debug.print "Ruta de Archivo no encontrado",ruta end if
y si ya estas harto con el kill y setearle atributos con setattr usa la API DeleteFile Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long Proceso_X() { dim rs as long rs=deletefile(ruta) }
Dulces Lunas!¡.
|
|
« Última modificación: 27 Septiembre 2009, 09:07 am por BlackZeroX »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
43H4FH44H45H4CH49H56H45H
Wiki
Desconectado
Mensajes: 502
|
Algo asi? Private Sub Command1_Click() Dim i As Integer Dim ruta As String For i = 0 To File1.ListCount - 1 If File1.Selected(i) = True Then If MsgBox("En realidad deseas borrar este archivo?", vbQuestion + vbYesNo, "Borrar Archivo") = vbYes Then ruta = File1.Path & "\" & File1.FileName SetAttr ruta, vbNormal Kill ruta File1.Selected(i) = False File1.Refresh Exit For End If End If Next i End Sub
|
|
|
En línea
|
-R IP :0100 -A 100 2826:0100 MOV AH,09 2826:0102 MOV DX,109 2826:0105 INT 21 2826:0105 MOV AH,08 2826:0105 INT 21 2826:0107 INT 20 2826:0109 DB 'MI NICK ES CODELIVE.$' 2826:0127 -R BX :0000 -R CX :20 -N CODELIVE.COM -W
|
|
|
Enemy
Desconectado
Mensajes: 285
Que vuelva el personal de hace 15 años al foro!
|
Ya quedo.. Private Sub CmdBorrar_Click() Dim i As Integer Dim Ruta As String For i = 0 To File1.ListCount - 1 If File1.Selected(i) = True Then If MsgBox("Está seguro de eliminar " + File1.FileName + "?", vbQuestion + vbYesNo, "Eliminar Archivo") = vbYes Then If Right(File1.Path, 1) <> "\" Then Ruta = File1.Path & "\" & File1.FileName Else Ruta = File1.Path & File1.FileName SetAttr Ruta, vbNormal Kill Ruta File1.Selected(i) = False File1.Refresh Exit For End If End If End If Next i End Sub El setattr vbnormal evita el error de eliminar, muchas gracias por la ayuda. SALUD.O.S
|
|
|
En línea
|
|
|
|
|
|