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.