|
Curso básico
de programación en Visual Basic
Lección
12
Solución,
for u output
|
Realizamos
programas para la gestión de empresas. Empresas medianas y
pequeñas. Programas de contabilidad, cartera de pedidos
clientes proveedores, facturación control de albaranes,
tesorería cartera de cobros y pagos y estadísticas.
Nuestro
agradecimiento a todos los que por unas causas o por otras
visitan nuestra web. Gestión de empresas PYMES. Curso de
programación de Visual Basic.
|
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
|