SoloCodigo

Programación General => Pascal => Mensaje iniciado por: CristhianUNSa en Jueves 23 de Octubre de 2008, 17:39

Título: Creacion y Busqueda en archivo binario
Publicado por: CristhianUNSa en Jueves 23 de Octubre de 2008, 17:39
Hola a todos!!

Hice un programa en Free Pascal, el cual debe hacer lo siguiente:

Escribir un programa en pascal, convenientemente modularizado que permita crear un archivo directo conteniendo datos de libros:

código, título, autor y año de edición.

Luego, dado un autor y un año de edición, mostrar todos los libros que dicho autor editó en ese año.

La verdad que todavia no encuentro el error...

Hice un watches, y el error me da cuando le doy el valor a "fin" de mi programa en el modulo "buscar".

Mando el archivo adjunto, y espero que me puedan ayudar, la verdad que ya estoy a punto de  :hitcomp:   :D :D  ...

Muchas gracias de antemano [attachment=0:32l8x1iy]error.txt[/attachment:32l8x1iy]
Título: Re: Creacion y Busqueda en archivo binario
Publicado por: eternity en Jueves 23 de Octubre de 2008, 21:15
tu codigo, lo compile en Dev Pascal 1.9.2, y cuando termino de cargar un libro se me sale!

dame hasta mañana y trato de debuguearlo!

suerte  :good:
Título: Re: Creacion y Busqueda en archivo binario
Publicado por: CristhianUNSa en Jueves 23 de Octubre de 2008, 21:55
Cita de: "eternity"
tu codigo, lo compile en Dev Pascal 1.9.2, y cuando termino de cargar un libro se me sale!

dame hasta mañana y trato de debuguearlo!

suerte  :good:

GRACIAS eternity! La verdad que ya encontre 2 errores muy bruscos en mi programa, pero todavia no logro corregir todo el prog por completo:

En la parte que dice

Código: Text
  1. procedure nuevo_reg(reg:libros);
  2.  

deberia ir
Código: Text
  1. procedure nuevo_reg([b]var[/b] reg:libros);
  2.  

El otro error estaba aqui

Código: Text
  1.      seek(arch,filesize(arch));
  2.               nuevo_reg(reg);
  3.                                         if buscar(arch,reg.codigo)=-1 then
  4.                                                 begin
  5.                                                 write(arch,reg);
  6.                                                 writeln;
  7.  
  8.  

La funcion buscar abre el archivo y lo cierra, por lo tanto, creo ke seria:

Código: Text
  1.             seek(arch,filesize(arch));
  2.                      nuevo_reg(reg);
  3.                                         if buscar(arch,reg.codigo)=-1 then
  4.                                                 begin
  5.                                                 [b]reset(arch);[/b]
  6.                                                 write(arch,reg);
  7.                                                 [b]close(arch);[/b]
  8.                                                 writeln;
  9.  
  10.  

Pero igual sigue sin funcionar :D ... Ya no se que otro error tendra, y el free pascal se me sale hasta cuando estoy haciendo el watches jeje  :rolleyes: ..

Espero que me puedan ayudar...

Y de nuevo muchas gracias eternity!



EDITO :) :

Ya solucione todos los problemas

El modulo de busqueda estaba mal: debia hacer : ini:= med+1 ó fin:=med-1 , y yo lo que hacia era incrementarlo en 1 o disminuirlo en 1.

Ademas de los errores que mencione, Mi problema venia porque en los modulos de busqueda y de ordenamiento, no debia hacer reset, ni close del archivo, por lo tanto saque los reset y close de ambos modulos, y me funciono perfecto!

Muchas gracias igualmente eternity por tomarte el trabajo de responderme
Título: Re: Creacion y Busqueda en archivo binario
Publicado por: eternity en Viernes 24 de Octubre de 2008, 04:39
si ya lo solucionaste genial!

 :good: