viernes, 20 de noviembre de 2009

Función Name para el manejo de archivos y directorios en visual basic 6.0



Name se utiliza para renombrar archivos y directorios. Esta función no se puede utilizar para renombrar archivos abiertos.

Ejemplo:

Name "path del archivo viejo a renombrar" as "path y nombre nuevo del archivo"

También con esta sentencia podemos mover archivos y directorios a otra ubicación. para ello debemos cambiar en el segundo parámetro la ruta del archivo.

Función FileLen para el manejo de Archivos y directorios en Visual Basic 6.0



Esta función nos devuelve el tamaño en bytes de un archivo.

Ejemplo:

Dim tamaño As Long

tamaño = FileLen("c:\windows\system32\control.exe")

MsgBox tamaño & " bytes"


FileLen es muy útil para trabajar con archivos aleatorios, ya que si queremos conocer la cantidad de registros que tiene el archivo, debemos dividir el tamaño del archivo por el tamaño de la estructura.

Ejemplo:

Private Type t_personas

nombre As String * 20
apellido As String * 20

End Type

Dim cant_reg As Long

Private Sub Form_Load()

cant_reg = FileLen("c:\miarchivo.dat") / Len(t_personas)

End Sub

Función kill para el manejo de ficheros y directorios en Visual Basic 6.0



La función kill se utiliza para eliminar archivos. También es muy fácil de utilizar, y el único parámetro que lleva es la ruta del archivo que queremos eliminar. Si queremos eliminar varios archivos de un directorio podemos utilizar el comodín"*", y si queremos excluir ciertos archivos utilizamos el comodín "?".

kill "c:\*.txt"

Función MkDir para el manejo de ficheros y directorios en Visual Basic 6.0



Esta función se utiliza para crear directorios, pero crea un directorio por vez, es decir que no crea varios niveles al mismo tiempo. La sintaxis es:

MkDir "Ruta directorio"

para poder crear un Directorio que contiene varios subdirectorios, podemos hacer lo siguiente:

El ejemplo despliega un InputBox para ingresar el path a crear:

Private Sub Command1_Click()

Dim i As Integer
Dim Array_Dir As Variant
Dim Sub_Dir As String
Dim El_Path As String

El_Path = InputBox("Escriba la ruta del directorio a crear" & _
"con los subdirectorios", " Crear varios niveles de directorios")

If El_Path = vbNullString Then Exit Sub

'Desglosa el path
Array_Dir = Split(El_Path, "\")

El_Path = vbNullString

'Recorre el array anterior para ir creando uno por uno
For i = LBound(Array_Dir) To UBound(Array_Dir)

Sub_Dir = Array_Dir(i)

If Len(Sub_Dir) > 0 Then
El_Path = El_Path & Sub_Dir & "\"

If Right$(Sub_Dir, 1) <> ":" Then
' Verificamos que no exista
If Dir$(El_Path, vbDirectory) = vbNullString Then
'Crea la carpeta
Call MkDir(El_Path)
End If
End If
End If
Next i

End Sub

Función FileCopy para el manejo de ficheros y directorios en Visual Basic 6.0



FileCopy nos permite copiar archivos. Esta función es muy fácil de usar. ejemplo:


FileCopy "origen", "destino"

Nota: si el archivo existe la función lo sobre escribe.

Función Dir para el manejo de ficheros y directorios en Visual Basic 6.0



La función Dir se utiliza o para buscar archivos y devuelve una cadena que representa el nombre de un archivo o directorio de acuerdo a un determinado patrón de búsqueda. La sintaxis de la función es:

Dir (ruta, atributos)


En el parámetro ruta debemos indicar el path de un archivo, directorio o unidad. Si el path no existe, la función Dir devuelve una cadena vacía.

En el parámetro atributos podemos especificar los siguientes:

vbnormal : cualquier atributo de archivo.
vbreadonly : archivos de solo lectura.
vbhidden: archivos ocultos
vbsystem : archivos de sistema
vbvolume : etiqueta de volumen de una unidad
vbdirectory : directorios
Ejemplo:

Si el archivo existe Dir devuelve "autoexec.bat"

Archivoabuscar = Dir("c:\autoexec.bat")


También podemos utilizar los comodines * y ? para filtrar búsquedas.

En este ejemplo devuelve el primer archivo exe que encuentra, si es que existe.

Archivoabuscar = Dir("c:\windows\*.exe")


En este ejemplo la función Dir devuelve directorios además de archivos

Archivoabuscar = Dir("c:\, vbdirectory")


El único inconveniente de esta función es que siempre devuelve el primer archivo que encuentra. Para que continúe buscando los demás archivos debemos poner la función sin parámetros. Ejemplo

Dim archivo As String

archivo = Dir("c:\*.exe")

While archivo <> ""
archivo = Dir
Wend



En el ejemplo anterior buscará todos los archivos exe en el directorio c:\. cuando ya no encuentre mas devolverá una cadena vacía y saldrá del bucle While.



Este otro ejemplo verifica si un archivo existe:



Private Function Verificar_Existe(path) As Boolean

If Len(Trim$(Dir$(path))) Then
Verificar_Existe = True
Else
Verificar_Existe = False
End If

MsgBox Verificar_Existe

End Function

Private Sub Form_Load()

Call Verificar_Existe("c:\autoexec.bat")

End Sub

Posicionarse en un registro determinado con Visual Basic 6.0



Supongamos que tenemos un archivo aleatorio que contiene 452 registros. Ahora queremos recuperar los datos del registro 258. Para posicionarse en un determinado registro hay una sentencia , hay una sentencia llamada Seek. Ejemplo:

Seek #1, 258
Get #1, , mivariable


si queremos posicionarnos en un registro determinado, pero en vez de leer, queremos grabar datos, hacemos la misma operación pero con la sentencia Put:

Seek #1, 258
Put #1, , mivariable

Leer datos en archivos aleatorios en Visual Basic 6.0



Para leer los registros o datos de un archivo aleatorio se utiliza la sentencia Get. Esta sentencia es exactamente igual que Put, pero la diferencia es que en vez de grabar los datos los recupera para poder utilizarlos luego en el programa.

Grabar datos en archivos aleatorios en Visual Basic 6.0



Para grabar datos en un archivo de acceso aleatorio se utiliza la sentencia Put.

Un ejemplo paso a paso:

primero declaramos una estructura de datos que contendrá la información de cada registro:

Private Type t_empleados
nombre As String * 15
apellido As String * 15
dirección As String * 30
edad As Integer
End Type


Luego creamos una variable que sea de tipo t_empleados.

Dim empleados As t_empleados
Ahora abrimos el archivo e indicamos en la función Len el tamaño de la estructura

Open "datos.dat" For Random As #1 Len = Len(clientes)


Ahora le asignamos un valor a cada campo de la estructura de esta forma:

empleados.nombre = "Carlos"
empleados.apellido = "Martinez"
empleados.dirección = "Avenida 9 de julio n° 2054"
empleados.edad = 45


Ahora grabamos en el registro n°1 del archivo los datos de esta forma:

Put #1, 1, empleados


Si queremos grabar mas datos, por ejemplo en el registro n° 2 del archivo hacemos lo siguiente:

empleados.nombre = "María"
empleados.apellido = "Gonzales"
empleados.dirección = "Avenida 13 n° 1100"
empleados.edad = 35

Put #1, 2, empleados

Close #1


como vemos ver la sentencia Put lleva 3 parámetros. El primero indica el numero de archivo abierto en el cual estamos trabajando. en el segundo debemos indicar el número de registro en el que se grabarán los datos. Si no ponemos el número de registro, los datos se grabarán en el último registro. Por último en el tercer parámetro le pasamos la variable asociada con la estructura de datos.

Archivos aleatorios o directos con Visual Basic 6.0



A diferencia de los archivos secuenciales, los archivos aleatorios almacenan datos en forma de registros. Como habíamos dicho en el capítulo anterior para leer datos de un archivo secuencial había que leer todo el archivo, es decir que no podíamos leer por ejemplo los datos que estuviesen en la línea 35 del mismo sin antes pasar por todos los datos anteriores, por eso su nombre de archivo secuencial.

En cambio los archivos aleatorios, también llamados archivos directos, almacenan los datos con una estructura diferente. Los datos se guardan en registros mediante una estructura definida de tipo Type (estructura definida por nosotros) también llamada UDT

Por ejemplo si tuviesemos 25 registros, cada uno con datos (apellido, email, telefono,etc..), y quisiera acceder al registro 17, puedo leer los datos del registro 17 sin tener que leer los 16 registros anteriores, ganando con ello mas velocidad y teniendo una estructura de datos definida.

Para abrir un archivo aleatorio para trabajar con él, se utiliza la sentencia Open con algunos cambios en lo que se refiere a los archivos secuenciales

Ejemplo:

open "elarchivo.dat" for random as #1 len = len(mivariable)


Como podemos ver para abrir un archivo de acceso aleatorio se utiliza la palabra Random (aleatorio). Luego debemos indicar el número de archivo para identificarlo, y por último una opción nueva : Len.

cada registro en el archivo, que es una estructura de datos Type, tiene que tener una longitud fija. Mediante la función Len de visual Basic debemos indicar el tamaño de la estructura de datos que vamos a utilizar. para que quede mas claro un ejemplo:

Primero definimos una estructura de datos:



Private Type t_clientes

nombre As String * 20
apellido As String * 15
dirección As String * 30
edad As Integer

End Type


Después creamos una variable llamada clientes de tipo t_clientes

Dim clientes As t_clientes


ahora abrimos nuestro archivo, y en el parámetro de la función Len le pasamos la variable para que visual basic calcule el tamaño de la estructura t_clientes



Open "datos.dat" For Random As #1 Len = Len(clientes)


La estructura de datos debe tener un tamaño fijo, no datos variables como en el caso de los archivos secuenciales, de ahí que se indicara en el Type en las variables mediante el asterisco en el caso de los String.

En cada campo de la estructura de datos debemos indicar el tamaño de la variable. En el caso del campo nombre de tipo string le hemos asignado una longitud fija de 20 bytes, en el apellido 15 y en la dirección 30 bytes. La variable o el campo edad que es de tipo integer, no debemos indicar el tamaño de la variable, ya que sabemos que un número integer ocupa 2 bytes.

En total esta estructura t_clientes tiene una longitud de 67 bytes (30 + 20 + 15 + 2 ).

Si no indicáramos en la sentencia Open el tamaño de la estructura, visual basic, por defecto asumiría la estructura de un tamaño de 128 bytes, y si nuestra estructura tendría mayor tamaño ocurriría un error en tiempo de ejecución, por lo cual siempre debemos utilizar la función len para calcular el tamaño de la misma.