Copiar archivos contenidos en un listbox XD

10/12/2005 - 19:54 por final | Informe spam
Bueno despues de pelearme con la computadora hasta las 4:00am(ni tanto
empeze como a las 3:00am XD no podia dormir con ese problema en mente @_@)
encontre una solcion XD a mi problema y pues como es costumbre la publico
por si a alguien le es util XD el problema inicial (Para los que no esten
enterados XD o no me entendieron en el primer post porke kreo ke no me di a
entender muy bien) era hacer un pequeño programa que le permitiera al
usuario mediante un boton agregar archivos a una lista (listbox o listview)
y despues esos archivos fueran copiados a una carpeta pero que su nombre
tubiera el numero en el que fue colocado(el primer archivo se llamaria
"0001 - file1.txt" el segundo "0002 - file2.txt" etc...) al principio se me
ocurrio que esto lo podria hacer con expresiones regulares detectando el
nombre del fichero en la ruta del archivo (algo complejo ese fue el problema
que expuse como problema con expresiones regulares) pero despues MVP Nombre
me dijo que no sabia porke keria hacerlo con expresiones regulares que lo
podia hacer de otra forma asi que se me ocurrio hacer lo siguiente(nota que
el siguiente codigo no tiene codigo para el manejo de errores es solo la
idea en general...):

Option Strict Off 'apagamos option estict (mas adelante les digo por ke lo
tuve ke kitar 8S
Imports System.IO 'importamos los espacios de nombres necesarios...
Imports System.Collections.CollectionBase

Public Class Form1

Public archivos As New ArrayList 'declaramos un array que contendra los
archivos que seran copiados XD
'1.- Creamos un boton que muestre un cuadro de dialogo de seleccion de
archivos XD para ke el usuario pueda agregar el archivo que desee y despues
lo agregamos a la lista XD

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
OpenFileDialog1.ShowDialog() 'muestra el cuadro de dialogo seleccion
de archivo
List.Items.Add(OpenFileDialog1.FileName) 'agrega el archivo
seleccionado a la lista
End Sub
'2.- Creamos un boton que permita copiar los archivos dentro de la lista a
un directorio elegido por el usuario
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
folder.ShowDialog() 'mostramos el dialogo seleccion de folder XD
(aqui le he cambiado el nombre ya que me da flojera escribir todo el nombre
del control su nombre original es: FolderBrowserDialog)
Dim destino As String = folder.SelectedPath 'declaramos el folder de
destino
For index As Integer = 0 To List.Items.Count - 1 'ahora hacemos un
bucle que recorra toda la lista
archivos.Add(New FileInfo(List.Items.Item(index).ToString)) ' y
agregamos cada fichero al array aqui es donde esta la magia en el echo que
en un array list segun lei en el MSDN podemos tener colecciones de objetos
asi que cada fichero lo ponemos como un objeto fileinfo lo que nos permitira
tener todas las propiedades del fichero
Next
For index As Integer = 0 To archivos.Count - 1'ahora hacemos un
bucle que recorra nuestra lista de objetos
If File.Exists(archivos(index).fullname) Then 'comprobamos que
el archivo exista (hay que recordar que el objeto dentro del array list es
de tipo fileninfo asi que podremos usar sus metodos y propiedades XD)
File.Copy(archivos(index).fullname, destino & "\" &
index.ToString("0000") & " - " & archivos(index).name)' y por ultimo los
copiamos al directorio destino con su nuevo nombre XD
End If
Next
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
Me.Close() 'este boton solo sirve para cerrar el formulario XD
End Sub
End Class

Bueno esta es la solucion que se me ocurrio espero que les sea de ayuda a
algun novato como yo que esta en aprendizage de visual basic .NET ahora
pasemos al porke desabilite option strict pues resulta que si lo tengo
activado... al momento de recuperar los datos del arraylist me marca el
siguiente error Option Strict On disallows late binding. no tengo idea de
porque me marca este error o de como solucionarlo asi que pues si alguien
sabe pues porfavor digame OK para ke no tenga ke kitar el option strict (ke
ya me acostumbre a trabajar con el y me siento "desnudo sin el") y pues como
siempre si kieren el codigo fuente para examinar mas de cerca como funciona
pueden descargarlo de http://mx.geocities.com/nma2040/fileinfotest.zip y ...
pues de mi parte esto es todo... Gracias por leer este tema XD.
y si alguien tiene una mejor solucion porfavor publiquenla muchos seriamos
muy felices con ello XD

Saludos

ATT Final
PD y no se molesten si piensan que mis soluciones son muy simples o "tontas"
solo soy un programador que esta dando sus primeros pasos y kiere compartir
sus descubrimientos con los demas XD

Sabio no es aquel que lo sabe todo si no el que sabe donde buscar y
como solucionar sus problemas XD
 

Leer las respuestas

#1 Eduardo Alvarado Meza
12/12/2005 - 10:41 | Informe spam
Te fijates que en las lineas:
archivos(index).fullname
archivos(index).name

fullname y name estan en minusculas? ese es el indicio de tu error y al
forma en que el IDE te lo esta enseñando.

Solucion:
If File.Exists(CType(controles.Item(index), FileInfo).FullName) Then
File.Copy(CType(controles(index), FileInfo).FullName,
destino & "\" & index.ToString("0000") & " - " & CType(controles(index),
FileInfo).Name)
End If

Una conversion de tipo porque lo que arraylist te retorna son Objects y no
FileInfos.

Suerte

Preguntas similares