Eliminar archivo con un command desde el FilelistBox

Iniciado por Enemy, 26 Septiembre 2009, 01:23 AM

0 Miembros y 1 Visitante están viendo este tema.

Enemy

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

seba123neo

Hola, este codigo:

Código (vb) [Seleccionar]
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:

Código (vb) [Seleccionar]
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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Enemy

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  ;)

Enemy

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.

BlackZeroX

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.
The Dark Shadow is my passion.

burbu_1

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.



Enemy

#6
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.

BlackZeroX

#7
intenta poner esto

Código (vb) [Seleccionar]

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)


Código (vb) [Seleccionar]

' //
' //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

Código (vb) [Seleccionar]


Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long

Proceso_X()
{
 dim rs as long
 rs=deletefile(ruta)
}



Dulces Lunas!¡.
The Dark Shadow is my passion.

43H4FH44H45H4CH49H56H45H

Algo asi?
Código (vb) [Seleccionar]
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

-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

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