Pascal/Turbo Pascal - Error 152

   
Vista:

Error 152

Publicado por Raul Gonzalez (4 intervenciones) el 27/06/2011 14:58:50
Buenos dias estoy haciendo un trabajo practico y ya lo termine el problema es que al ejecutarlo me tira el error 152, a que se puede dever, me pueden ayudar. Gracias


program parte1;

uses wincrt, crt; //accediendo a la biblioteca de windows para visualizar en pantalla... creo

type
tr_libros = record //creando el registro
ISBN: string [20];
titulo: char;
year: String [10]; // año del libro (no me deja escribir la "ñ")
cantvend: integer;
precio: real;
end; // finalizando el registro

tf_archlib= file of tr_libros; //asignando el registro a un archivo

var //generando las variables
vr_libros: tr_libros;
vf_archlib : tf_archlib;
va_opcion: char;

BEGIN
clrscr; // limpiando pantalla
assign (vf_archlib,'d:\libreria.dat'); {crea en el disco D el archivo 'libreria.dat'}
REWRITE(vf_archlib);
SEEK(vf_archlib,filesize(vf_archlib)); // moviendo apuntador al final del archivo existente
WRITELN('Deseas cargar los datos de un alumno? (s/n)');
READLN(va_opcion);
WHILE (va_opcion <> 'n') or (va_opcion <> 'N') DO
BEGIN // capturando registro
WRITE('Ingrese ISBN : ');
READLN(vr_libros.ISBN);
WRITE('Ingrese Título de la obra : ');
READLN(vr_libros.titulo);
WRITE('Ingrese Año de edición : ');
READLN(vr_libros.year);
WRITE('Ingrese cantidad vendida por título de la obra : ');
READLN(vr_libros.cantvend);
WRITE('Ingrese precio del libro : ');
READLN(vr_libros.precio);
WRITE(vf_archlib, vr_libros); // grabando el registro al archivo
WRITELN('NUEVO REGISTRO INSERTADO');
WRITELN;
WRITELN('Deseas cargar los datos de un libro mas? (s/n)');
READLN(va_opcion);
END;
CLOSE(vf_archlib); // cerrando archivo y avisando
WRITELN('ARCHIVO CERRADO');
READLN;
END.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error 152

Publicado por ramon (2072 intervenciones) el 27/06/2011 16:29:55
{perdona en el fragmento de programa que insertas veo que tienes la misma unidad dos veces
me explico la unidad [ crt la tienes como wincrt y como crt cada una pertenece a diferentes lenguajes
de pascal por lo cual te dará error si trabajas con pascal 7 solo es crt si lo a ces con pascal para windows es wincrt en el programa que es el tullo pero con algunos cambios en la forma}

program parte1;

uses
crt; {accediendo a la biblioteca de windows para visualizar en pantalla... creo}

type
tr_libros = record {creando el registro}
ISBN : string[20];
titulo : char;
year : String[10]; {// año del libro (no me deja escribir la "ñ")}
cantvend : integer;
precio : real;
end; {// finalizando el registro}

tf_archlib = file of tr_libros; {//asignando el registro a un archivo}

var {//generando las variables}
vr_libros : tr_libros;
vf_archlib : tf_archlib;
va_opcion : char;

BEGIN
clrscr; {// limpiando pantalla}
assign (vf_archlib,'d:\libreria.dat'); {crea en el disco D el archivo 'libreria.dat'}
REWRITE(vf_archlib);
SEEK(vf_archlib,0{filesize(vf_archlib)});
{moviendo apuntador al final del archivo existente}
{El archivo no existe lo acavas de crear esta vacio porlotanto es 0}
WRITELN('Deseas cargar los datos de un alumno? (s/n)');
READLN(va_opcion);
WHILE (va_opcion <> 'n') or (va_opcion <> 'N') DO
BEGIN {// capturando registro}
WRITE('Ingrese ISBN : ');
READLN(vr_libros.ISBN);
WRITE('Ingrese Título de la obra : ');
READLN(vr_libros.titulo);
WRITE('Ingrese Año de edición : ');
READLN(vr_libros.year);
WRITE('Ingrese cantidad vendida por título de la obra : ');
READLN(vr_libros.cantvend);
WRITE('Ingrese precio del libro : ');
READLN(vr_libros.precio);
WRITE(vf_archlib, vr_libros); {// grabando el registro al archivo}
WRITELN('NUEVO REGISTRO INSERTADO');
WRITELN;
WRITELN('Deseas cargar los datos de un libro mas? (s/n)');
READLN(va_opcion);
if va_opcion in['s','S'] then
seek(vf_archlib,filesize(vf_archlib)); {Existe porlotanto al final}
END;
CLOSE(vf_archlib); {// cerrando archivo y avisando}
WRITELN('ARCHIVO CERRADO');
READLN;
END.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error 152

Publicado por Raul Gonzalez (4 intervenciones) el 27/06/2011 18:47:47
mira a nosostros en la facu no enseñaron escribiendo uses wincrt, crt; si le dejo solo al wincrt me da error y no me deja ni siquiera ejecutar, a hora si le dejo solo al crt me deja ejecutar pero me vuelve a tirar el error. osea, no creo que el problema este en uses. y no puedo encontrar donde es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error 152

Publicado por ramon (2072 intervenciones) el 27/06/2011 20:24:17
{ a ver cual es programa que utilizas en pascal no se pueden utilizar unidades del pascal 7 con unidades de pascal para windows son unidades diferentes y no las aceptan los programas dando
error de unidad pero el programa tuyo que te pase tenia un error de forma al entrar la instrucción
rewrite(xxxx) la apertura del archivo es con valor de inicio 0 por lo cual se inicia con seek(xxx,0)
y después se disecciona cada vez que se guarda un nuevo registro o sea con contador de entradas
por ejemplo pasos := pasos + 1, seria seek(xxx,pasos) revisarlo en la modificación tuya que te mande en e ya te pongo como tu inicias seek(xxx,filesize(xxx)) esta probado en turbo pascal 7 y
pascal para windows y funciona sin dar error espero que esto te ayude.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error 152

Publicado por ramon (2072 intervenciones) el 28/06/2011 15:51:56
{trabajas con free pascal este si admite las dos librerías crt pero dependiendo si trabajas con
win 32 o go32 se pone una librería o otra el error 152 corresponde unidad no preparada eso es
la unidad [D] que marcas para salvar los datos}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar