Domingo 22 de Diciembre de 2024, 17:05
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Pascal
»
Ficheros en Binario/hexadecimal
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Ficheros en Binario/hexadecimal (Leído 3266 veces)
SergioyoPlayer
Miembro activo
Mensajes: 31
Ficheros en Binario/hexadecimal
«
en:
Sábado 18 de Octubre de 2008, 21:48 »
0
Veréis: quiero poder leer y crear ficheros en mdo binario ("a pelo"). Yo codifico e interpreto cómo está guardado el fichero, al estilo "editor hexadecimal", que te abre lo que sea y ves cómo está.
Ya me he definido las funciones necesarias para represetar el binario y todo eso, pero no sé de qué tipo tiene que ser declarado el fichero :s
O he intentado con BYTE, y traducir a binario, pero es igual que abrirlo en modo texto (no es lo que yo quiero, ya que no abre todos los ficheros). He probado con declararlo de tipo BOOLEAN, alternando el TRUE a 1 y luego probé a 0, pero nada.
Alguna idea?? Os pongo mi "aplicación experimental" como adjunto
Sobre todo, quedáos con la idea de que necesito poder abrir CUALQUIER FICHERO como un editor hexadecimal lo hace.
Gracias de antemano!!
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Tweet
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: Ficheros en Binario/hexadecimal
«
Respuesta #1 en:
Sábado 18 de Octubre de 2008, 22:04 »
0
¿Crees de verdad que alguien en su sano juicio va a descargar y ejecutar un programa que ni siquiera sabe a ciencia cierta de dónde ha salido?
Yo no
.
Código: Pascal
VAR
f_binario
:
FILE
OF
byte
;
Fr33k K0mpu73r
eternity
Miembro activo
Mensajes: 78
Nacionalidad:
Re: Ficheros en Binario/hexadecimal
«
Respuesta #2 en:
Domingo 19 de Octubre de 2008, 04:11 »
0
Lo que quieres es hacer un programa que haga algo de este tipo:
Código: Text
"000000000 4C 6F 20 71 75 65 20 71-75 69 65 72 65 73 20 65 |Lo que quieres e|"
"000000010 73 20 68 61 63 65 72 20-75 6E 20 70 72 6F 67 72 |s hacer un progr|"
"000000020 61 6D 61 20 71 75 65 20-68 61 67 61 20 61 6C 67 |ama que haga alg|"
"000000030 6F 20 64 65 20 65 73 74-65 20 74 69 70 6F 3A |o de este tipo: |"
si es asi consultame, si no, no entiendo que es lo que queres hacer!
SergioyoPlayer
Miembro activo
Mensajes: 31
Re: Ficheros en Binario/hexadecimal
«
Respuesta #3 en:
Domingo 19 de Octubre de 2008, 13:04 »
0
Es precisamente lo que dice Eternity jeje
Pero quiero que sea capaz de abrir cualquier tipo de dato escrito en disco (con lo de BYTE solo me abre los de texto y los demás, abre "solo un cacho", porque el EOF salta antes de acabar :s)
Respecto a lo de bajar una aplicación que en efecto, no sabes de dónde ha salido, está en rar por algo ¬¬
Pd.: Si me puedes decir cómo declarar el tipo y cómo leerlo, te lo agradecería mucho eternity
eternity
Miembro activo
Mensajes: 78
Nacionalidad:
Re: Ficheros en Binario/hexadecimal
«
Respuesta #4 en:
Domingo 19 de Octubre de 2008, 17:41 »
0
Tendrias que probar con lo siguiente:
Código: Pascal
Var
archivo
:
file
of
text;
eso deberia abrir cualquier archivo, ahora estoy un tanto ocupado con la facu, asi que depues vere eso que dices sobre el EOF, mandame el codigo de lo que tengas y yo te lo reviso y debugueo, por que si no es muy dificil, vamos a los hechos!
«
última modificación: Lunes 20 de Octubre de 2008, 17:32 por eternity
»
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: Ficheros en Binario/hexadecimal
«
Respuesta #5 en:
Domingo 19 de Octubre de 2008, 17:42 »
0
Cita de: "SergioyoPlayer"
porque el EOF salta antes de acabar
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.
Fr33k K0mpu73r
SergioyoPlayer
Miembro activo
Mensajes: 31
Re: Ficheros en Binario/hexadecimal
«
Respuesta #6 en:
Domingo 19 de Octubre de 2008, 21:31 »
0
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
eternity
Miembro activo
Mensajes: 78
Nacionalidad:
Re: Ficheros en Binario/hexadecimal
«
Respuesta #7 en:
Domingo 19 de Octubre de 2008, 22:22 »
0
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!
SergioyoPlayer
Miembro activo
Mensajes: 31
Re: Ficheros en Binario/hexadecimal
«
Respuesta #8 en:
Lunes 20 de Octubre de 2008, 23:53 »
0
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
eternity
Miembro activo
Mensajes: 78
Nacionalidad:
Re: Ficheros en Binario/hexadecimal
«
Respuesta #9 en:
Lunes 20 de Octubre de 2008, 23:58 »
0
Genial! cuando lo tengas listo compartelo con la comudidad!
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Pascal
»
Ficheros en Binario/hexadecimal