Mas allá de lo que mencionan con respecto a abrir y cerrar archivos con los métodos AssignFile/CloseFile, lo que yo veo es que el método AbrirMe confía en que el archivo está asignado y solo hace un Reset para poner el puntero al principio.
El método CrearMe asigna el archivo y al final lo cierra, por lo que cualquier operación posterior daría un error.
En este caso, si se llama primero a CrearMe y luego a Abrirme, el Reset se tratará de realizar sobre un archivo cerrado.
Código Delphi
[-]
Procedure CrearMe (var Me: TipoMe);
var
RC: TipoRegControl;
RB: TipoRegBandera;
begin
assign (Me.B,_RutaArchivo+_ArchivoBanderas);
assign (Me.D,_RutaArchivo+_ArchivoDatos);
assign (Me.C,_RutaArchivo+_ArchivoControl);
[...]
close (Me.B);
close (Me.D);
close (Me.C);
{$I+}
end;
Procedure AbrirMe (var Me: TipoMe);
begin
reset (Me.B);
reset (Me.D);
reset (Me.C);
end;
procedure TForm3.Button1Click(Sender: TObject);
var
X: TipoPosicion;
Cant: TipoCantidad;
RD: TipoRegDatos;
begin
ListBox1.Clear;
AbrirMe (Me);
[...]
CerrarMe (Me);
end;