![]() |
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() gracias por las respuestas. |
veo muchas cosas raras como que los valores los almacenas en cadena 1 y cadena2 pero luego no haces uso de ellos y si de cadena el cual no le has dado ningun valor. Otra cosa, en vez de Edit1->clear, prueba Edit1->text="".
|
Hola andres_89.
Si estás usando C++ Builder de modo visual, en lugar de usar la librería estándar ifstream, te conviene aprovechar la VCL usando TFileStream, aquí hay algunos ejemplos: File Processing, buscando seguramente encontraras mas material. No sé si interpreté lo que queres hacer, pero te pongo un ejemplo acorde a lo que entendí: Código:
String file_hex(const String aFileName, const int LoPos, int HiPos) Código:
void __fastcall TForm1::Button1Click(TObject *Sender) Saludos :) |
Error ceros
Hola ecfisa,gracias por la opción al vlc, como dices mejor aprovecharla si ya se tiene,pero ejecute el código y probando con otros archivos y otras posiciones como (50,70), pero en todas me muestran :
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 , ya lo ejecute como administrador e igual me sigue mostrando ceros en cualquier posición. Saludos. |
Tenes razón, disculpas.
Código:
String file_hex(const String aFileName, const int StartingAt, const int Quantity) Código:
void __fastcall TForm1::Button1Click(TObject *Sender) Saludos :) |
Os propongo una función en Ansi C para convertir una cadena contenida en un buffer de tamaño conocido y no ASCIIZ (como el buffer obtenido de la lectura de un archivo de texto) en texto hexadecimal:
Código:
//--------------------------------------------------------------------------- Si pasamos como argumento Str = NULL nos devuelve el tamaño del buffer necesario (2*BinSize + 4) Es una función que yo he usado para esos fines. Saludos. |
Hexadecimal
Hola ecfisa y escafandra,
el código de ecfisa, me funciono correctamente pasandole como parámetro cualquier archivo, gracias. escafandra, tu código lo veo muy interesante, estoy analizando tu función ("bool BinToStr(BYTE *Bin, DWORD BinSize, char* Str, DWORD *StrSize)"), sinceramente no habia visto algunos códigos del Anci C que están en tu código....., bueno, una consulta estoy tratando de llamar tu función para leer un archivo como hexadecimal pero no logro a llamarla, encontre una forma de llamarla pero no me funciona: BINTOSTR(string, string_type) cuales serian sus parámetros? Saludos. |
[code]bool BinToStr(BYTE *Bin, DWORD BinSize, char* Str, DWORD *StrSize) /CODE]
Bin: un puntero de tipo BYTE (char*) que apunta al buffer que contiene el binario a convertir a texto hexadecimal. BinSize: El tamaño del buffer anterior. Str: Un puntero tipo char* con un buffer que recibirá la salida del texto hexadecimal StrSize: un puntero tipo DWORD con el tamaño del buffer Str. Ejemplo Supongamos que lees un binario en un puntero BYTE *Data de tamaño Size: Código:
char *Str; // Puntero a un buffer que recibirá la cadena Saludos. |
La franja horaria es GMT +2. Ahora son las 13:16:32. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi