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 SubF�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...THENOption 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