Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Leer un archivo sin conocer su estructura (https://www.clubdelphi.com/foros/showthread.php?t=63287)

rastafarey 07-02-2009 00:05:24

Leer un archivo sin conocer su estructura
 
Es posible leer un arcivo binario creado en pascal sin conocer la estrutura.

Ejemplo.
Código Delphi [-]
Type
   TValores = Array[1..3] Of String;
   TEstruc = record
      Nombre: String;
      Entero. Integer;
      Valores: TValores;
   End;
Supongamos que se creo la estrutura con ese tipo de registro.
pero no la conocozco es posible leer los datos sin conocer dicha estructrura.

AzidRain 07-02-2009 00:15:10

¿Es posible leer Cirilico sin saber que significa cada letra? A ambas preguntas la respuesta es NO. Tienes que saber que estás leyendo para poder interpretarlo. Un archivo binario o de datos contiene mucha información que con un poco de paciencia podría uno deducir primero el tamaño de cada registro, luego el tamaño de cada campo y por último el tipo del mismo. Realmente es difícil más no imposible...Alguna vez hice un programa que podía leer y escribir tablas DBF en Turbo Pascal 5.5 y algo similar anduve investigando.

cHackAll 07-02-2009 16:18:17

Cita:

Empezado por rastafarey (Mensaje 337386)
Es posible leer un arcivo binario creado en pascal sin conocer la estrutura.

Ejemplo.

Código Delphi [-]
Type   TValores = Array[1..3] Of String;
   TEstruc = record
      Nombre: String;
      Entero. Integer;
      Valores: TValores;
   End;

Supongamos que se creo la estrutura con ese tipo de registro.
pero no la conocozco es posible leer los datos sin conocer dicha estructrura.

Un string antiguamente ShortString, era facilmente reconocible porque veías un caracter que en decimal era el tamaño de los siguientes caracteres, los cuales siempre contenian datos congruentes #8cHackAll seguido de 257 #0s ó basura [un total de 256 caracteres = SizeOf(ShortString)], el siguiente caracter (si tambien es un string) es igualmente un valor decimal X seguido X caracteres congruentes que forman una palabra "comprensible".

Un byte ocupa y caracter "solitario" y comunmente poco reconocible, un Word son 2 y un Cardinal son 4; el cual puede ser un valor "extraño" seguido de 3 ceros (#0). Entonces sabemosque tu estructura:

Código:

ShortString(256)
Integer(4)
ShortString(256)
ShortString(256)
ShortString(256)

Entonces el tamaño del archivo mod 1028 será 0 y cada elemento siempre sera de 1028 lo cual leido en una estructura de prueba sera totalmente comprensible.

Espero haberte dado la idea ;)


La franja horaria es GMT +2. Ahora son las 18:17:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi