Ver Mensaje Individual
  #7  
Antiguo 04-01-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

En un archivo de acceso directo los registros son contiguos y está definido exáctamente la longitud de cada registro. Los primeros cuatro bytes del primer sector del archivo de acceso aleatorio contiene el número de registros existentes y el largo de cada registro en bytes. (Este formato corresponde a Pascal, puede haber variado en tamaño en Delphi)
Código:
Sector | Byte | Contenido
-------+------+---------------------------
0      |  0   | Numero de registros  (LSB)
0      |  1   | Numero de registros  (MSB)
0      |  2   | Longitud de registro (LSB)
0      |  3   | Longitud de registro (MSB)
Es debido a esa organización que se puede acceder de forma 'directa' a cualquier registro indicando su posición. Además, como bién indica duilioisola, permite almacenar distintos tipos de datos:
Código Delphi [-]
...
type
  TRegistro = packed record
    Nombre: string[30];
    Edad: Integer;
    Vive: Boolean;
    Otro: array [1..5] of char;
  end;

var
  F: File of TRegistro;
  R: TRegistro;

A diferencia, los archivos de texto son una secuencia de caracteres dividido en líneas mediante la secuencia CR/LF y finalizan con Ctrl+Z.

Es por esto que veo difícil que resulte hacer un cast sobre el archivo secuencial. Por supuesto no habría ningún problema si el archivo a leer hubiera sido previamente guardado como tipado:
Código Delphi [-]
var
 F : file of TregFicha;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita