Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-12-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
Sustituir bytes de un binario

Buenas, quiero sustituir un byte concreto en una dirección concreta del archivo.
La cosa es que no se exactamente cómo hacer eso o si estoy obligado a volcar el archivo completo en memoria y hacer ahí los cambios.
Si es así me imagino que una buena opción es usar TMemoryStream pero no sé bien cómo hacerlo. ¿Alguna ayuda que me ponga en la buena dirección?
Responder Con Cita
  #2  
Antiguo 23-12-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Código PHP:
void replaceByte(const AnsiString &aFilename, const unsigned char &Byte,
  const 
unsigned int &position)
{
  
TFileStream *stream;

  
stream = new TFileStream(aFilenamefmOpenWrite);
  try
  {
    
stream->Seek(positionsoBeginning);
    
stream->Write(&Bytesizeof(Byte));
  }
  
__finally
  
{
    
delete stream;
  }

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 23-12-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
Muchas gracias.
Eso sería para escritura en binario ¿Verdad?
Supongo que es el equivalente a fwrite de C y Write de fstream de C++ ¿No?
Otra cosa, ¿Sabes si los nuevas versiones de embarcadero ya traen alguna librería para calcular crc32, MD5 y similares?
Responder Con Cita
  #4  
Antiguo 23-12-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
También recuerdo que había una función para hacer duplicado del archivo pero no recuerdo cuál. CopyFile o algo así me suena. ¿Sabrías decirme?
Responder Con Cita
  #5  
Antiguo 24-12-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.202
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Si tienes localizado el offset del BYTE que quieres sobrescribir, puedes hacerlo sin necesidad de leer todo el fichero. Esto te lo permiten las funciones de fichero de C y la API de Windows. Si prefieres la API mira esto: SetFilePointer. Para copiar un fichero: CopyFile


Las funciones criptográficas de windows te permiten calcular el Hash MD5. Aquí tienes un ejemplo para calcular el MD5 de un fichero: GetMD5FromFile.




Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
sustituir . decimal por coma avmm2004 PostgreSQL 3 07-04-2012 13:40:28
Sustituir cadena cincosoft OOP 4 09-02-2009 19:45:08
Localizar un array de bytes en un fichero binario. maro Varios 3 12-02-2008 12:58:12
Sustituir cadenas bill_mg Firebird e Interbase 2 12-08-2006 22:14:18
Sustituir punto por coma Carlos Arevalo Varios 3 14-10-2005 00:19:40


La franja horaria es GMT +2. Ahora son las 02:14:06.


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
Copyright 1996-2007 Club Delphi