Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/04/2014, 05:50
UsuarioArroba
Invitado
 
Mensajes: n/a
Puntos:
Visual Basic 6 - No logro cargar solo un archivo, tienen que ser mas a la fuerza

Llevo toda la mañana dándole vueltas y no se si es la resaca de anoche o que. Estoy haciendo una pequeñísima aplicación en Visual Basic 6 que carga una o más imágenes en una matriz y después las abre en un control "Image1". Utilizando las teclas del control numerico, me desplazo imagen arriba o abajo recorriendo la matriz. Todo parecía funcionar perfectamente, pues siempre probaba con 5 imágenes, pero esta mañana de casualidad, cargué solo una y no se abría. A continuación pongo el código:

Código:
        Dim archivos() As String
        Dim i As Long, flag As String
        flag = cdlOFNAllowMultiselect Or cdlOFNExplorer Or cdlOFNHideReadOnly
        With CommonDialog1
        .FileName = ""
        .MaxFileSize = 32000
        .FLAGS = flag
        .ShowOpen
        End With
        archivos = Split(CommonDialog1.FileName, Chr(0))
        b = 0
        numero_archivos = UBound(archivos)
        For i = 0 To UBound(archivos)
        arraycant(b) = archivos(i)
        b = b + 1
        Next i
        Erase archivos
        If numero_archivos < 1 Then
        Else
        ruta = arraycant(0) + "\" + arraycant(1)
        Image1.Picture = LoadPicture(ruta)
        contador_imagen = contador_imagen + 1
        End If
Algunas variables que no aparecen declaradas en el código es porque son publicas, están declaradas al principio para poder acceder desde otras funciones o ventanas.

La variable b quizas no tenga sentido a simple vista, pero me sirve para otra función.
arraycant(0) almacena la ruta de la carpeta y las siguientes posiciones del array, por ejemplo arraycant(1), arraycant(2)... el nombre de las imágenes.
Como digo, cuando abro 2 o más archivos, no hay problemas. Pero cuando abro solo uno, no carga la imagen. Depurando, me he dado cuenta de que cuando abro un solo archivo, la variable "numero_archivos" vale 0, mientras que si abro dos archivos, vale 2. No lo comprendo, cuando abro uno debería valer 1.

No digo más, haber si alguno/a logra averiguar el error.

Por cierto, siento si el código está bastante guarreado, llevo muchos años sin programar y uno pierde las buenas costumbres. Para lo que lo necesito, me conformo con que funcione

Otro por cierto, si sabéis como puedo hacer en este mismo código para que al abrir el commondialog muestre solo archivos gif, jpg y bmp, me vendría bien, pero tener en cuenta que deben mostrarse los 3 a la vez, es decir, si la carpeta contiene un archivo de cada clase, deberían mostrarse los 3 al mismo tiempo, no mostrarse primero el gif, después al cambiar el filtro mostrarse el bmp... eso no me sirve de nada, lo que necesito es que se vean los 3 tipos a la vez y el resto de ficheros no.

Saludos y gracias de antemano.