FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Buscar cadena en un archivo binario
Hola, llevo un buen rato buscando información tanto en el foro como en google sobre editar archivos binarios y no encuentro la solución a lo que busco, os cuento por si me podéis ayudar.
tengo un archivo llamado "config.dat", lo he abierto con un editor de texto y aparecen caracteres codificados y entre ellos se encuentra la cadena que estoy buscando sin codificar, en principio mi idea era la de abrir, buscar, reemplazar y guardar, pero se me esta complicando el código para hacerlo, buscando por el foro encontré este código..
Pero ahora no se como hacer para buscar dentro del archivo la cadena que estoy buscando. |
#2
|
||||
|
||||
ZayDun,
Cita:
Revisa esta información: Te sugiero revisar específicamente el Msg #43. Espero sea útil Nelson. |
#3
|
||||
|
||||
Muchas gracias Nelson! llevaba toda la mañana buscando y haciendo pruebas, te agradezco mucho tu ayuda.
|
#4
|
||||
|
||||
Cita:
He copiado el código que me has facilitado tal y como esta y me copila sin problemas, ya he reemplazado la ruta y las cadenas hex y me lanza el mensaje "Cambio de Archivo Realizado" y me genera una copia exacta con la extensión *.new del archivo pero no modificada nada, he probado con diferentes rutas incluso con un archivo de texto plano, alguna idea de que puede ser? Estoy utilizando Windows 7 64bit y la versión Delphi XE5. Última edición por ZayDun fecha: 10-10-2014 a las 17:09:44. |
#5
|
||||
|
||||
ZayDun,
Cita:
Te comento: 1- El código del Msg #43 del link sugerido, tiene dos funciones para el cambio de archivos a nivel Binario : ChangeFileHex y ChangeFileOffset las cuales, permiten cambiar una cadena hexadecimal en un archivo. 2- Función ChangeFileHex: Cambia n ocurrencias de una cadena hexadecimal por una nueva cadena hexadecimal en un archivo dado y salva los cambios en un nuevo archivo del mismo nombre del original con extensión .new, en el mismo directorio del archivo de entrada. 3- Función ChangeFileOffset: Sustituye en un Offset (Dirección en Decimal) de un archivo dado una cadena hexadecimal y salva los cambios en un nuevo archivo del mismo nombre del original con extensión .new, en el mismo directorio del archivo de entrada. Los Bytes Per Row (BPF) de ambas funciones están en función de la longitud de la cadenas de entrada OldHex (Función ChangeFileHex) y NewHex (Función ChangeFileOffset), siendo importante recordar que ambas cadenas deben ser del mismo tamaño en las funciones mencionadas. Nota: Las dos funciones anteriores leen y modifican los archivos de entrada y salida directamente en disco, lo cual les permite procesar archivos de cualquier tamaño, limitados solo por las características del Sistema de Archivos del Sistema Operativo de forma rápida y eficiente e independientemente de cualquier componente de Delphi, funcionado correctamente según lo esperado en las pruebas realizadas. Pregunto: 1- ¿Cual función utilizastes ChangeFileHex o ChangeFileOffset?. 2- ¿Has utilizado el programa HxD - Hexeditor para ubicar el offset de la cadena a modificar?. Revisa con detalle todo lo anterior, si aun no te funciona, publica un link para descargar el archivo con el detalle de lo que quieres modificar y vere que puedo hacer Espero sea útil Nelson. |
#6
|
||||
|
||||
Cita:
Tengo una última duda si fueses tan amable de contestarme, estoy utilizando la función ChangeFileHex y a veces el nombre de la cadena es mas largo que el de la original, hay alguna posibilidad de permitir que cambie independientemente del tamaño de la cadena? cuando realizo el cambio manualmente en el archivo no hay ningún problema con el archivo, es decir que no se vuelve corrupto. Gracias de nuevo por tu tiempo. |
#7
|
||||
|
||||
ZayDun,
Cita:
Te comento: 1- Si es posible, la clave esta en tener dos Buffers : Uno de entrada y otro de salida. 2- Voy a hacer unos cambios a la función ChangeFileHex y cuando este listo lo publico Pregunto: 1- ¿Cual es el objetivo de esta aplicación? 2- ¿El uso de la aplicación es a nivel comercial, académico o personal?. 3- ¿En que país se usara la aplicación?. Espero sea útil Nelson. |
#8
|
||||
|
||||
Cita:
El programa es para uso personal y el país es España. |
#9
|
||||
|
||||
ZayDun,
Cita:
Pregunto: 1- ¿A que programa te refieres?, ¿Cual es el objetivo de esa aplicación? 2- ¿Cuales son los datos de configuración por defecto de la aplicación en cuestión que quieres modificar?. Espero sea útil Nelson. |
#10
|
||||
|
||||
Hola ZayDun.
Cita:
Ejemplo de uso: Aunque probé el código y sé que realiza correctamente lo que buscas, insisto en que resguardes el original y trabajes sobre una copia. Hasta estar completamente seguro que la aplicación que usa ese archivo funcione después del cambio. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#11
|
||||
|
||||
ZayDun,
Están pendientes las preguntas del Msg #9 Nelson. Última edición por nlsgarcia fecha: 11-10-2014 a las 08:09:52. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Modificar archivo binario | elarys | Varios | 1 | 21-10-2010 14:18:13 |
Funciones para limpiar y buscar una cadena en otra cadena o en un fichero | xaguilars | Trucos | 1 | 29-07-2007 22:20:14 |
Funcion para buscar cadena dentro de otra cadena y el numero de veces | flystar | Varios | 3 | 02-07-2007 22:48:08 |
Convertir a binario cadena de caracteres | wgfs | Varios | 0 | 28-10-2006 00:58:28 |
Buscar cadena dentro de otra cadena | doverzhoff | Varios | 4 | 27-01-2004 05:27:15 |
|