Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: analpa1997 en 17 de Junio 2015, 20:03
-
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:
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.
-
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
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
-
Pues haciendo todos esos cambios me funciona como deseaba! Muchisimas gracias por la ayuda!