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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-12-2013
andres_89 andres_89 is offline
Miembro
 
Registrado: dic 2013
Posts: 46
Poder: 0
andres_89 Va por buen camino
Error con buffer

Buenas amigos, tengo un pequeño error al tratar de leer un ejecutable en hexadecimal, consigo leer la parte que quiero, pero al momento de volverlo a leer se va concatenando lo que leí al principio con lo que leo segundo, y lo que quisiera es que si vuelvo a leer me borre lo leído anteriormente, les dejo el código para ver donde cometo mi error:

Código:
 void file_hex()
{

    AnsiString str1,str2,hex,cadena_1,cadena_2,cadena;

    unsigned int length;
    unsigned char *buffer;
    char nombre_archivo[] = "prueba.exe";

    ifstream archivo(nombre_archivo, ios::binary);

    if(archivo.fail())
        cout << "Error al abrir el archivo " << nombre_archivo << endl;
    else
    {
        // obtener longitud del archivo
        archivo.seekg (0, ios::end);
        length = archivo.tellg();
        archivo.seekg (0, ios::beg);

        // obtener memoria para la variable
        buffer = new unsigned char [length];

        // leer datos como bloque
        archivo.read ((char*)(buffer),length);
        archivo.close();

        // imprimir cada posicion del buffer como hexadecimal
        for (unsigned int i = 200; i < 216; i++)
       //    for (unsigned int i = 384; i < 400; i++) //linea de codigo que solo quiero leer
        {
            if (buffer[i] < 16)
                {
                    str1.printf("0%X", buffer[i]);
                    strcat(cadena_1.c_str(),str1.c_str());
                }
            else
                {
                    str2.printf("%X", buffer[i]);
                    strcat(cadena_2.c_str(),str2.c_str());
                }
        }

         /*  cadena.c_str() -> se almacena toda la cadena hexadecimal


        hex = cadena.c_str();
        Form1->Edit1->Text = hex;

        delete[] buffer; // creo que acá esta el error, lo elimino pero igual se sigue quedando en el buffer.
    }
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   Edit1->Clear();//supuestamente borro la cadena mostrada en edit1.
   file_hex();
}
cuando lo ejecuto me muestra la cadena hexadecimal normal, pero cuando lo vuelvo a ejecutar, me devuelve la cadena + la cadena anterior, y asi se van concatenando mientras los voy ejecutando, lo cual no quiero, quiero que si vuelvo a ejecutar me borre la anterior y me muestre solo la actual cadena ejecutada, bueno espero me hayan entendido.
gracias por las respuestas.
Responder Con Cita
 



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
solucion a Error Invalid blob handle in record buffer memehua Conexión con bases de datos 2 26-09-2011 22:03:14
Eliminar Buffer TCP jlsc Varios 2 16-06-2010 22:13:00
ERROR:ShLink.GetPath(Buffer, Sizeof(Buffer), Data, SLGP_UNCPRIORITY) Mav Varios 2 26-05-2008 21:31:49
Bitmap buffer fitolanga Gráficos 4 21-04-2007 15:58:29
Error Invalid blob handle in record buffer??? sin usar "Blobs to cache" varuhs Conexión con bases de datos 4 22-01-2007 21:19:53


La franja horaria es GMT +2. Ahora son las 01:34:31.


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