• Viernes 8 de Noviembre de 2024, 19:22

Autor Tema:  Creacion y Busqueda en archivo binario  (Leído 1914 veces)

CristhianUNSa

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Creacion y Busqueda en archivo binario
« en: Jueves 23 de Octubre de 2008, 17:39 »
0
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]
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

eternity

  • Miembro activo
  • **
  • Mensajes: 78
  • Nacionalidad: ar
    • Ver Perfil
    • http://lameriendadejuan.blogspot.com/
Re: Creacion y Busqueda en archivo binario
« Respuesta #1 en: Jueves 23 de Octubre de 2008, 21:15 »
0
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:


CristhianUNSa

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Creacion y Busqueda en archivo binario
« Respuesta #2 en: Jueves 23 de Octubre de 2008, 21:55 »
0
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

eternity

  • Miembro activo
  • **
  • Mensajes: 78
  • Nacionalidad: ar
    • Ver Perfil
    • http://lameriendadejuan.blogspot.com/
Re: Creacion y Busqueda en archivo binario
« Respuesta #3 en: Viernes 24 de Octubre de 2008, 04:39 »
0
si ya lo solucionaste genial!

 :good: