[ Foro de Pascal ]
Buenas, y desde ya muchas gracias por vuestra ayuda.
El problema es el siguiente: debo generar un archivo binario, que es de tipo registro, leyendo un archivo de texto. Esto fue lo que hice:
program ejercicio2;
uses crt;
const
valoralto = 9999;
type
alumnos = record
codigo:integer;
apellido:string;
nombre:string;
mat_apro:integer;
mat_desa:integer;
end;
detalles = record
codigo:integer;
materia:integer;
estado:string;
end;
maestro = file of alumnos;
detalle = file of detalles;
var
file_alum: maestro;
file_det: detalle;
reg_alum: alumnos;
reg_det: detalles;
opc: integer;
//OPCION 1: GENERACION DE ARCHIVO BINARIO
procedure binario_maestro();
var
texto:text;
a_cod,a_apro,a_desap:integer;
a_ape,a_nom:string;
begin
assign(texto,'alumno.txt');
assign(file_alum,'alumnos');
rewrite(file_alum);
reset(texto);
while (not eof(texto)) do
begin
//leer archivo de texto
readln(texto,a_cod,a_ape,a_nom,a_apro,a_desap);
//grabar en registro
reg_alum.codigo := a_cod;
reg_alum.apellido := a_ape;
reg_alum.nombre := a_nom;
reg_alum.mat_apro := a_apro;
reg_alum.mat_desa := a_desap;
//grabar en binario
write(file_alum,reg_alum);
end;
close(texto);
close(file_alum);
end;
//OPCION 2: GENERACION DE ARCHIVO BINARIO
procedure binario_detalle();
var
texto:text;
a_cod,a_mat:integer;
a_est:string;
begin
assign(texto,'detalle.txt');
assign(file_det,'detalles');
rewrite(file_det);
reset(texto);
while (not eof(texto)) do
begin
readln(texto,a_cod,a_mat,a_est);
reg_det.codigo:=a_cod;
reg_det.materia:=a_mat;
reg_det.estado:=a_est;
write(file_det,reg_det);
end;
close(texto);
end;
el problema esta en la opcion 1, dado que la opcion 2 si funciona perfectamente, y es casi identico, solo cambio la cantidad de datos que estoy leyendo del archivo de texto, no se si sera eso, o por los string, no logro entenderlo, son identicos uno funciona y el otro no, me da error 103, y lo busque y es "file not open".
me gustaria que si pueden por favor decirme exactamente como debo armar el archivo de texto para leerlo sin problemas, se que debo dejar un espacio en blanco entre cada palabra, y con el enter genrar el fin de linea.
desde ya muchas gracias.
¿Seguro que el fichero existe? Tu programa no lo está comprobando. Mira el apartado 7.1.4 del curso de Pascal:
http://www.aprendeaprogramar.com/mod/resource/view.php?id=566
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)