Curso B�sico de Programaci�n
en Visual Basic

Soluciones de la entrega Doce.

 

Como ejercicio, haz un programa que al pulsar en un bot�n, te pida diez nombres, los guarde en un fichero y despu�s pulsando en otro bot�n los muestre en un label.
No es necesario que uses un array para guardar los datos, pero podr�as hacer dos versiones, con y sin un array.

Soluci�n 1: Sin usar Array:

Private Sub Command1_Click()
    Dim i%
    Dim nFic%
    Dim Nombre$

    'Soluci�n 1, sin array
    nFic = FreeFile
    'Abrimos el fichero para almacenar los datos
    Open "C:\Prueba.txt" For Output As nFic
    For i = 1 To 10
        Nombre = InputBox("Escribe el nombre n�mero " & CStr(i))
        Print #nFic, Nombre
    Next
    Close nFic

End Sub

Private Sub Command2_Click()
    Dim i%
    Dim nFic%
    Dim Nombre$

    'Soluci�n 1, sin array
    Label1 = ""
    nFic = FreeFile
    'Abrimos el fichero para leer los datos
    Open "C:\Prueba.txt" For Input As nFic
    For i = 1 To 10
        Input #nFic, Nombre
        Label1 = Label1 & Nombre & vbCrLf
    Next
    Close nFic
End Sub

 

Soluci�n 2: Usando un Array:

Private Sub Command1_Click()
    Dim i%
    Dim nFic%
    Dim losNombres(1 To 10) As String

    'Soluci�n 1, sin array
    'Primero preguntamos los nombres
    For i = 1 To 10
        losNombres(i) = InputBox("Escribe el nombre n�mero " & CStr(i))
    Next

    'Ahora los guardamos
    nFic = FreeFile
    Open "C:\Prueba.txt" For Output As nFic
    For i = 1 To 10
        Print #nFic, losNombres(i)
    Next
    Close nFic

End Sub


Private Sub Command2_Click()
    Dim i%
    Dim nFic%
    Dim variosNombres(1 To 10) As String

    'Soluci�n 2, con array
    nFic = FreeFile
    Open "C:\Prueba.txt" For Input As nFic
    'Leer los diez nombres
    For i = 1 To 10
        Line Input #nFic, variosNombres(i)
    Next
    Close nFic

    'mostrar los nombres
    Label1 = ""
    For i = 1 To 10
        Label1 = Label1 & variosNombres(i) & vbCrLf
    Next
End Sub

F�jate que con esta segunda forma, si usas un array a nivel de m�dulo o global, puedes mostrar los datos cuando quieras, ley�ndolos una vez y despu�s mostr�ndolos en cualquier ocasi�n, hasta que asignes nuevos datos.
Lo mismo ocurre al pedir esos nombres y despu�s guard�ndolos en el disco cuando quieras.

En el siguiente listado, puedes ver un ejemplo (simple) de esto que te digo.
F�jate que a la hora de leer los nombres, primero se comprueba si existe el fichero, esto ya lo vimos en la entrega del IF...THEN

Option Explicit

Dim losNombres(1 To 10) As String


Private Sub cmdGuardar_Click()
    Dim i%
    Dim nFic%

    'Ahora los guardamos
    nFic = FreeFile
    Open "C:\Prueba.txt" For Output As nFic
    For i = 1 To 10
        Print #nFic, losNombres(i)
    Next
    Close nFic
    Label1 = "Datos guardados correctamente"

End Sub


Private Sub cmdLeer_Click()
    Dim i%
    Dim nFic%

    'Nos aseguramos que exista el fichero:
    If Len(Dir$("C:\Prueba.txt")) Then
        nFic = FreeFile
        Open "C:\Prueba.txt" For Input As nFic
        'Leer los diez nombres
        For i = 1 To 10
            Line Input #nFic, losNombres(i)
        Next
        Close nFic
        Label1 = "Datos le�dos correctamente"
    Else
        Label1 = "No existe el fichero de nombres"
    End If

End Sub


Private Sub cmdMostrar_Click()
    Dim i%

    'mostrar los nombres
    Label1 = ""
    For i = 1 To 10
        Label1 = Label1 & losNombres(i) & vbCrLf
    Next

End Sub


Private Sub cmdPreguntar_Click()
    Dim i%

    Label1 = ""
    'Borramos el contenido anterior
    For i = 1 To 10
        losNombres(i) = ""
    Next
    'Tambi�n se puede hacer as�: (esto es m�s r�pido)
    'ReDim losNombres(1 To 10)

    'Preguntamos los nombres
    For i = 1 To 10
        losNombres(i) = InputBox("Escribe el nombre n�mero " & CStr(i))
    Next
End Sub


Private Sub Form_Load()
    Label1 = ""
End Sub

 

Ir al índice principal del Guille