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 :-\
CitarPrivate 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:
CitarPrivate 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
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.
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 ;)
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.
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.
Cita de: Bakura182 en 26 Septiembre 2009, 05:42 AM
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.
Cita de: BlackZeroX en 26 Septiembre 2009, 06:27 AM
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.
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!¡.
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
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