domingo, 28 de junio de 2009

Escribir datos en archivos de texto con Visual Basic 6.0



Para escribir datos en archivos de texto se utiliza la sentencia Print y Write.

Ejemplo:

Dim nombre As String
Dim edad As Integer
Dim telefono As String
Open "c:\miarchivo.txt" For Append As #1Print #1, "esta es una línea"
Print #1, "esta es otra línea"
Print #1, nombre, edad, telefonoClose #1



En este ejemplo agregamos datos a un archivo existente llamado miArchivo.txt con la sentencia Print.

Primero abrimos el archivo con Open. luego la sentencia Print lleva 2 parámetros. el primero indica el archivo que estamos manipulando (el archivo n°1, dentro del código), el segundo parámetro indica los datos que se agregarán en el mismo. En el segundo parámetro podemos poner un dato directamente (una cadena, número, etc...),, por último cerramos el archivo.



Escribir datos con la sentencia Write

A diferencia de Print, la sentencia Write escribe datos en un archivo separados por comas.

Ejemplo:



Dim nombre As StringDim apellido As String
apellido = "Peres"
nombre = "Carlos"Open App.Path & "\Archivo.txt" For Output As #1Write #1, nombre, apellidoClose #1


Como podemos ver la sentencia Write escribe los datos en el archivo separados por coma. En la primera línea escribirá el contenido de las variables nombre y apellido . También se pueden pasar los datos directamente a Write sin usar variables, por ejemplo:



Write #1, "Un dato", "Otro dato", "Otro mas"


Nota importante: cuando escribimos datos con la sentencia Print se utiliza la sentencia Line Input para leer los datos del archivo. En cambio cuando escribimos datos separados por comas con la sentencia Write debemos utilizar la sencia Input

Para que esta página no sea tan extensa, he armado 10 ejercicios que utilizan todo lo visto hasta aquí, o sea el tema relacionado a los archivos secuenciales. Dentro del código se encuentra detallado cada paso y lo podés descargar al final de esta página.

Leer el contenido de un archivo de texto con la función Input con Visual Basic 6.0



La función input, a diferencia de Line Input que Lee por línea, Input lee todo el contenido del archivo de una sola ves, es decir no necesitamos, como en el ejemplo anterior, utilizar un bucle.

El modo de usarlo es el siguiente:

Primero se abre el archivo con Open, por ejemplo:

Open Path_Archivo For Input As #1

Luego se asigna a una variable, el contenido que devolverá la función Input:

Contenido = Input(LOF(1), #1)

Un ejemplo:

Lo siguiente lee el contenido de un archivo txt y lo carga en un textBox multilínea

Colocar un TextBox llamado txt_Path ( para especificar la ruta del archivo ).

El Textbox que mostrará los datos del fichero, colocarle el nombre txt_Contenido

Código en un botón:

On Error GoTo Err_Sub

Dim n_File As Integer
Dim Contenido As String


'Número de archivo libre
n_File = FreeFile

'Abre el archivo indicado
Open txt_Path For Input As n_File

'Lee todo los datos del archivo y lo almacena en la variable
Contenido = Input$(LOF(n_File), #n_File)

'Cierra el archivo abierto
Close n_File

'Carga el contenido de la variable en el TextBox
txt_Contenido = Contenido

Exit Sub

Err_Sub:

MsgBox Err.Description, vbCritical

Ejemplo para leer un archivo de texto utilizando Line Input en Visual Basic 6.0



Lo siguiente, lee un archivo de texto línea por línea, y carga el contenido en un control ListBox. colocar un control List1, un Command1 y un Text1 para indicar el path del archivo a leer:

Option Explicit

Private Sub Command1_Click()
On Error GoTo errSub

Dim n_File As Integer
Dim Linea As String

'Elimina el contenido del listbox
List1.Clear

'Número de archivo libre
n_File = FreeFile

'Abre el archivo para leer los datos
Open text1.Text For Input As n_File

'Recorre linea a linea el mismo y añade las lineas al control List
Do While Not EOF(n_File)

'Lee la linea
Line Input #n_File, Linea
List1.AddItem Linea
Loop

Exit Sub
errSub:
'error
MsgBox "Número de error: " & Err.Number & vbNewLine & _
"Descripción del error: " & Err.Description, vbCritical
End Sub

Private Sub Form_Load()

Command1.Caption = " Cargar en Listbox "

End Sub