Hola maugescully.
Cuando ví el título pensé que te estabas ahogando...
Voy a agregar algunas sugerencias a las que ya te ha dado Lord Delfos.
En este caso no es buena idea dejar que el usuario elija el nombre del archivo, complica la cosa y es
propenso a generar confusiones.
Si lo que guardamos son alumnos y el archivo es de texto, lo lógico es darle un nombre (ALUMNOS.TXT por ej.) y
trabajar con el mismo. El nombre de la variable archivo "Archi" podés declararlo como global por ahora.
Todo esto te simplifica puesto que podés habrir el archivo al ingresar a la aplicación y cerrarlo cuando
abandonas la misma, prescindiendo así de los TOpenDialog.
Abrir y Cerrar:
Código Delphi
[-]
procedure TForm1.FormCreate;
begin
Assign(Archi,'C:\PRUEBA\ALUMNOS.TXT'); {$i-}
Reset(Archi);
if IOResult <> 0 then
Rewrite(Archi);
{$I+}
end;
procedure TForm1.FormClose;
begin
CloseFile(Archi);
end;
Los errores se generan en AgregarAlumo, mirá este código:
Código Delphi
[-]
procedure TAdministrar.AgregarAlumno(a:Alumno; var b:byte);
begin
{$I-}
Append(Archi); {$I+};
b:=IOResult;
if b = 0 then
BEGIN Writeln(Archi, a.Apellido);
Writeln(Archi, a.Nombres);
Writeln(Archi, a.DNI); Writeln(Archi, a.N1); Writeln(Archi, a.N2);
Writeln(Archi, a.N3);
END end;
Hay más cosas para depurar, pero la idea es que vos lo hagas...
Por último te aconsejo que escuches lo dicho por mi colega sobre el uso de {$I}.
Una pista: You
try to resolve.
Saludos.