Autor Tema: Comprobar si fichero (archivo) existe en ruta con Visual Basic file exists  (Leído 14662 veces)

analpa1997

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Hola, estoy "jugueteando" con el Visual Studio 2010, y me ha surgido una dudilla sobre un programa que estoy haciendo

Resulta que en una carpeta tengo unas 180.000 imagenes distintas (de un juego de ordenador, el Football Manager), y estoy inmerso en un proyecto para seguir aumentando ese numero. Por ello se me hace necesario saber si una imagen existe o no en dicha carpeta para, si no existe, hacerla. El nombre de estas imagenes es un numero de una longitud de 1 a 9 cifras.

Entonces, estoy intentando crear un programa que me diga, a partir de introducir el numero que caracteriza esa imagen (su nombre) en un TextBox, si esa imagen se encuentra dentro de esa carpeta o no y, en caso afirmativo, que me la muestre (esto ultimo es opcional, pero si se consigue mejor que mejor).

Para ello, llevo hecho este codigo:

Código: [Seleccionar]
Public Class Form1
    Dim FileName As Single
    Dim ruta As String
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Text = "Buscador de jugadores"
        Label1.Text = "Introduce la ID del jugador"
        Button1.Text = "Comprobar"
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ruta = "E\mis cosas\IMÁGENES ANTONIO (TRABAJOS)\FM2014\Partidas\Gráficos\Faces\Player\" & FileName & ""
        FileName = Val(TextBox1.Text)
        If System.IO.File.Exists(ruta) = True Then
            MsgBox("El jugador cuya ID es " & FileName & " existe en la carpeta")
        Else
            MsgBox("El jugador cuya ID es " & FileName & " no existe en la carpeta")
        End If

    End Sub
End Class

Sin embargo, el programa no funciona correctamente puesto que solo me dice que la imagen no esta en la carpeta (aunque si esté, para ello estoy usando una que sé que se encuentra en ella).

Creo que el problema radica en la ruta, puesto que tras la carpeta "Player" el nombre del archivo varia en funcion del que yo introduzca en el TextBox, pero es como si no reconociera la ruta, porque siempre me dice que la imagen no existe. He probado a añadirle al final la extension .png tambien (por si acaso), pero no ha servido tampoco de nada. Alguna solucion? Gracias de antemano

PD: En cuanto a que me muestre la imagen, me gustaria que fuera en el MsgBox de si la imagen existe (el primer caso), se que se debe usar un PictureBox (creo), pero no se como hacer que se muestre en dicho MsgBox ni como hacer el codigo para que me muestre la imagen concreta que le pido.
« Última modificación: 24 de Junio 2015, 11:59 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, parece que tienes varios errores en el código así que voy a tratar de darte una orientación, aquí estamos para aprender  ;). Una ruta o nombre de archivo siempre se maneja como texto. Por tanto no debes usar Dim FileName As Single sino Dim FileName As String.

Tienes que diferenciar entre una variable de tipo texto (alfanumérica) que contiene un número de una variable numérica propiamente dicha. Puedes consultar http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=238:contenido-y-asignacion-de-contenido-a-variables-con-pseudocodigo-tipos-de-variables-basicos-cu00126a&catid=28:curso-bases-programacion-nivel-i&Itemid=59 donde hay una explicación

La otra cuestión a la que debes prestar atención es a cuál es el valor de las variables cuando las invocas.

En este fragmento tienes:

        ruta = "E\mis cosas\IMÁGENES ANTONIO (TRABAJOS)\FM2014\Partidas\Gráficos\Faces\Player\" & FileName & ""
        FileName = Val(TextBox1.Text)

Fíjate que en la primera línea llamas a Filename, pero FileName está vacío porque todavía no ha recibido una asignación.

Esto es un error conceptual. Te recomiendo leer esto para orientarte https://www.aprenderaprogramar.com/foros/index.php?topic=1313.0


También tienes que prestar atención a las rutas. Esta ruta está mal escrita: E\mis cosas\IMÁGENES ANTONIO

Posiblemente la ruta sea E:\mis cosas\IMÁGENES ANTONIO

Si te faltan unos dos puntos o un simple espacio ya no funcionará. Te recomiendo copiar la ruta directamente del explorador de windows.

También te recomiendo introducir mensajes de comprobación, por ejemplo si introduces MsgBox(ruta & " es la ruta") podrás comprobar que no estás generando bien la ruta y a continuación preguntarte ¿por qué no me genera bien la ruta? Y así corregirlo...

Con este código donde se refleja lo anterior yo he conseguido que me funcione introduciendo en el textbox el nombre del fichero, por ejemplo avioneta.jpg

Pero cada cual tendrá que introducir la ruta que esté usando correctamente, la que pone el código es sólo un ejemplo

Código: [Seleccionar]
Public Class Form1
    Dim FileName As String
    Dim ruta As String
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Text = "Buscador de jugadores"
        Label1.Text = "Introduce la ID del jugador"
        Button1.Text = "Comprobar"
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        FileName = TextBox1.Text
        ruta = "C:\Users\Alex\Imgs\" & FileName & ""

        MsgBox(ruta & " es la ruta")

        If System.IO.File.Exists(ruta) = True Then
            MsgBox("El jugador cuya ID es " & FileName & " SI existe en la carpeta")
        Else
            MsgBox("El jugador cuya ID es " & FileName & " no existe en la carpeta")
        End If

    End Sub
End Class

Saludos

analpa1997

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Pues haciendo todos esos cambios me funciona como deseaba! Muchisimas gracias por la ayuda!
« Última modificación: 18 de Junio 2015, 19:30 por Alex Rodríguez »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".