Programación General > Pascal

 Ficheros en Binario/hexadecimal

<< < (2/2)

m0skit0:

--- Cita de: "SergioyoPlayer" ---porque el EOF salta antes de acabar
--- Fin de la cita ---

Eso es porque usas EOF como condición de final de fichero y no deberías. Tendrías que usar el tamaño del fichero y compararlo con tu puntero de fichero.

SergioyoPlayer:
Te refieres al procedimiento BLOCKREAD??

Jum... Lo estuve mirando. Lo intentaré con eso ^^

Pero aún así, me gustaría oír la propuesta de eternity (por si acaso me falla esta y el error está en la interpretación :s)

Pero muchas gracias!! Me pongo a ello  :hitcomp:

eternity:
bueno aca esta el esqueleto de lo tenes que hacer hay algunos comentarios sobre algunas cosas, fijate que use el blockread que antes mencionabas, es por que siempre quiero leer tantos caracteres como quiera.


--- Código: Pascal ---program visor;const  MaxPalabra = 16;var  archivo: file; {archivo sin tipo}  path: string;  palabra: array [1..MaxPalabra] of char; {use esto por que mi compilador se quejaba con un string}  i: byte;  leidos: integer;  linea: longint;begin  write('ingrese la dir del archivo: '); readln(path);  assign(archivo, path); {asocio el archivo a la dir}  reset(archivo, 1); {lo prepara para escritura, el 1 es por que leeremos bytes}  {aca faltan los controladores para saber si el archivo existe o no}   linea := 1;  while not(EOF(archivo)) do   begin     writeln;     blockread(archivo, palabra, sizeof(palabra), leidos);     write(linea, ' | '); {aca iria el numero de linea de la forma FFFF FFFF}     linea := linea + 1;     for i := 1 to MaxPalabra do      write(palabra[i], ' ');{aca iria tu funcion de hexadecimal es}     write('| ',palabra, ' |');   end;  readln;  close(archivo);end.  
luego tendrias que fijarte que algunos cuando llegan a la mitad ponen un guion o separador no es mas que un simpre if pero te lo dejo a vos, y ademas tomate el trabajo de que la cadena (un buffer) palabra, inicialice simpre por que si en la ultima lectura antes del EOF lees menos de MaxPalabras podrian quedarte valores con "basura" no contemple esto, pero esa es tu responsabilidad, que la fuerza te acompañe joven padawan!

 :good:

SergioyoPlayer:
Muchas gracias por las sugerencias ^^

Ya hice entre ayer y hoy toda la declaración de tipos y funciones del binario y hexadecimal (a mi manera), y conseguí leer correctamente cualquier tipo de fichero del disco duro, y representar los bytes en binario, hexadecima, numérico y carácter ^^

Una cosilla a anotar: si en vez de INTEGER, declaras WORD, en este caso podrás contar el doble de datos. Y si en vez de LONGINT utilizas CARDINAL, igual :)  (en su momento me empollé la documentación que trae FPC jeje).

Gracias de nuevo :)   :lol:  :)  :)

eternity:
Genial! cuando lo tengas listo compartelo con la comudidad!

 :beer:

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa