Analizando la declaracion de archivos binarios



Ya sabemos que los archivos binarios se declaran con File Of y que despues de of debemos especificar el tipo de datos que guardara el archivo que bien puede ser cualquier tipo predefinido en pascal o un tipo definido por el usuario.

Todas las operacion que se te puedan ocurrir aplicarles a un archivo se reducen en dos LEER y ESCRIBIR sobre el archivo, las altas, bajas, consultas, modificaciones y bla, bla bla no se pueden realizar sin saber como Leer de un archivo y Escribir en un archivo. Hago esta aclaracion porque es lo que hay que tomar en cuenta cuando se declara un archivo binario en pascal.

Cuando declaras un archivo de tipo entero solo puedes leer y escribir enteros, esto es en parte verdad, realmente no puedes escribir enteros como tales sino variables de tipo entero, no puedes escribir una constante en un archivo, no puedes escribir un 10, pero si puedes escribir una variable que valga 10, etc

Cuando declaras un archivo de un tipo definido por ti, no podras escribir ni leer mas que variables del mismo tipo del archivo.

type
     empleado=record
       nombre:string;
       edad:integer;
     end;

var
     archivo:file of empleado;
     registro:empleado;

Al declarar un archivo, en este caso de tipo empleado, no podras escribir ni leer de el mas que variables de tipo empleado, en este caso puede ser registro.

var
     archivo:file of array[1..10] of integer;

Que bien, puedo declarar archivos de tipo arreglo, pues si que bien, habra quien los use, pero hay que tener en cuenta que no puedes leer y escribir casillas individuales, si deseas modificar la casilla 1 de algun arreglo, tienes que escribir todas las 10 casillas donde obviamente la numero 1 estara modificada.

Otra cosa mas a tener en cuenta es que los paramentros de los procediimentos y funciones no pueden ser de tipo file of

procedure no_se_puede(var archivo:file of integer);
begin
end;

La delcaracion anterior no es valida y se provocara un error en tiempo de ejecucion, �Y a mi que?, bueno cuando se trabaja con programas grandes que manejan archivos, lo mas sanamente recomendable es usar procedimientos y funciones como buscar, altas etc, etc. pero como los paramentros nos pueden declararse de la forma file of entonces lo que tenemos que hacer es un tipo archivo de la siguiente manera

type
     empleado:record
      nombre:string;
      edad:integer;
     end;

tarchivo:file of empleado

var
     archivo:tarchivo;

procedure si_Se_puede(var aux:tarchivo);
begin
end.

Noten como hago enfasis en var ya que todos los parametros de tipo archivo deben pasarse por valor y no por referencia.

Hacer un tipo archivo francamente podria no ser tan necesario, pues si dejamos la variable archivo simplemente como una variable global no necesitariamos estar pasando los archivos como paramentros, pero realmente a mi me parece que es mas legible tener los tipo archivo asi declarados aunque se usen archivos globales, ademas que nos sirve para cuando queramos declarar mas de una variable con el mismo tipo de archivo.


Regresar


inicio
Si llegaste a esta pagina desde un buscador
haz click aqui para ir a la pagina principal
Hosted by www.Geocities.ws

1