![]() |
![]() |
| Paypal | 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
|
||||
|
||||
|
Aplicación búsqueda y reemplazo en múltiples ficheros
Buenas amigos, mi sea es crearme una aplicación la cual le indique un directorio y busque una cadena que yo le indique en todos los archivos y la sustituya por otra que yo también le indique.
La idea es que me permita hacer búsquedas en ASCII, Unicode, y binario y para ello tengo pensado abrir el archivo, volcarlo a la memoria y ahí buscar la cadena y si la encuentra elimino el fichero original y creo uno nuevo y le envío desde el inicio hasta donde fue encontrada la cadena, le envío la cadena nueva y así hasta el final y para todos los archivos. Quiero que sea eficiente y por eso es la idea de copiarlo a la memoria y trabajar en la memoria. La cosa es que necesito orientación de cómo volcarlo a memoria y si es un tipo que permita hacer búsquedas y cosas así. También sobre cómo realizar las busquedas para ASCII, Unicode y binario ya que la cadena será obtenida desde un TEdit. Gracias por adelantado. Y una forma de crear un TMemo u otra opción la cual permita que vaya introduciendo caracteres y lo vaya mostrando con el formato 00 00 00 00 00 ... y solo caracteres hexadecimales. Es para el tema de búsquedas binarias. Última edición por aguml fecha: 12-06-2020 a las 01:05:55. |
|
#2
|
||||
|
||||
|
Lo que quiero es un componente como este: http://atviewer.sourceforge.net/atbinhex.htm
Solo que este sirve para mostrar el contenido de un archivo y yo lo que quiero es algo como un TMemo en el que yo escriba con el formato Hex de este componente. ¿Conocen alguno así? |
|
#3
|
||||
|
||||
|
¿Hay algo como esto para buscar en el volcado del archivo binario?
https://poesiabinaria.net/2013/10/re...y-glibustring/ ¿Pero para un buffer y búsquedas en binaria? |
|
#4
|
||||
|
||||
|
De momento he conseguido esto:
Código PHP:
Cualquier ayuda me vendrá bien ya que estoy tocando algo que nunca había hecho antes. El tema de leer todos los archivos de un directorio no tengo problemas para hacerlo. |
|
#5
|
||||
|
||||
|
Buscar y reemplazar fragmentos binarios es relativamente sencillo. Quizás estos hilos te ayuden:
Cargar exe como texto plano Buscar y reemplazar Bytes Cambiar cadenas de un proceso en ejecución Leer el archivo lo puedes hacer como lo hacer en un stream o en un buffer de memoria localizada a bajo nivel del tamaño del archivo y leer sobre el también a bajo nivel (lread) Saludos. |
|
#6
|
||||
|
||||
|
El caso es que yo quiero que se pueda sustituir por cadena de diferentes largos y por eso uso dos TMemoryStream, primero porque creo que será más rápido que ir leyendo desde el archivo y segundo porque voy copiando a un TMemoryStream para poder cambiar el tamaño sin problema. Para el tema de que sea binario, ASCII o Unicode mi código valdría para todos pero la cosa está en el formato de los TEdits que en mi caso son WideString con lo que, si no estoy confundido es Unicode y si quiero buscar AnsiString tengo que convertirlo y lo mismo pasa con una cadena binaria, por ejemplo si meto "31323334" tendré que ir sacando substrings de dos en dos caracteres, colocando "0x" delante, uso ToInt y lo meto en un array de bytes y lo uso para buscar. Esa es la idea que tengo en mente.
Lo que me preocupa es que este metiendo la para en lo que tengo hecho o no. Si lo ves bien el siguiente paso será meter eso en una función donde reciba las dos cadenas y sus largos respectivos y el tema de binario, Unicode o ASCII se trabaja antes de llamar a la función. Para el tema de convertir la cadena Hex binaria a un array de bytes iría en otra función para que sea todo menos engorroso a la hora de seguirlo. Última edición por aguml fecha: 12-06-2020 a las 20:58:54. |
|
#7
|
||||
|
||||
|
Así quedaría mi función de reemplazo:
Código PHP:
|
|
#8
|
||||
|
||||
|
La principal duda que tengo es si Unicode, UTF-8 y WideString ().c_bstr() sería lo mismo o si no tiene nada que ver y si es así ¿Como paso de WideString a Unicode? Es para hacer búsquedas en Unicode.
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Múltiples ejecuciones de una aplicación | Angel.Matilla | C++ Builder | 7 | 27-11-2015 19:35:49 |
| Eliminación de múltiples ficheros vía FTP (Indy) | JoysticK | Internet | 2 | 15-09-2015 13:14:51 |
| como relalizar una busqueda de ficheros con las api | bastardo10 | API de Windows | 1 | 18-06-2007 13:27:50 |
| Multiples Ventanas en una Aplicacion | Nomad | Varios | 7 | 18-05-2007 22:12:28 |
| multiples instancias de aplicación | nfrfabian | Varios | 3 | 09-12-2006 14:55:17 |
|