Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

un codigo a simple vista perfecto.

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: un codigo a simple vista perfecto. Responder citando

A ver si podeis echarme una mano con este código. Se trata de abrir cualquier fichero binario y representarlo en pantalla en forma hexadecimal,pues el muy ..., no va para ficheros mayores a 11Kb. A ver si podeis probarlo y decidme cual es el error.
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
TFileStream *fichero;
unsigned char *buffer;
long int lon;
if (OpenDialog1->Execute())
{

fichero= new TFileStream(OpenDialog1->FileName,fmOpenRead);
lon=fichero->Size;
buffer= new unsigned char[lon];
fichero->ReadBuffer(buffer,lon);
delete fichero;
RichEdit1->Text=""; // TFileStream
for (long int i=0;i<lon;i++)
RichEdit1->Text=RichEdit1->Text+IntToHex(buffer[i],2)+ " ";
delete[] buffer;
}
}
Premio para el que lo encuentre. Que va era broma, le doy mis mas sinceras gracias en to caso. _Leo aqui tienes un reto, aunque seguro q tienes troco pa esto.

Volver arriba
Mensaje    Asunto: un codigo a simple vista perfecto. Responder citando

Hola,

el problema puede venir de una limitación de tamaño del propio control de visualización del texto RTF.
Yo probaria de guardar el resultado en un fichero de texto para ver si lo hace correctamente y luego me dedicaria a optimizar la visualización, por ejemplo por páginas y no todo de golpe ya que es difícil que se pueda ver todo el texto de una sola vez.

Espero haberte sido útil

Saludos
Joan

Volver arriba
Mensaje    Asunto: un codigo a simple vista perfecto. Responder citando

Aquí tienes un ejemplo de como abrir, un fichero binario, y yo no he tenido problemas, con la longitud de fichero. Lo que habo es abrirlo de forma binaria, y me da lo mismo si lo de dentro es binario, texto o lo que sea.

Lo que debes hacer luego, es tratar el caracter como tu desees.

Lo que hace el código, es abre un fichero, en este caso de texto, y lo recorre hasta el final, y lo guardo todo en Numero. Una vez hecho esto, calculo su longitud, le añado un retorno de carro y cierro el fichero ya que la información la tengo en el puntero.

Por último, vas movimiendote caracter a caracter, hasta donde quieras. Espero que te sirva, no obtante, si quieres más información, ponme un e-mail.

luisignacio.martin@teleinformatica-sa.es


#define _cr 13
char *Codigo_Fuente,*Numero;
long Longitud_Codigo_Fuente;

AnsiString borrar1="c:\\aenviar\\ejemplo.txt";

if ((fichero=fopen((borrar1).c_str(),"rb"))==NULL)
{Application->MessageBox(
"¿Fallo al abrir el fichero ejemplo.txt)?",
"CLIENTE", MB_YESNOCANCEL);
}

fseek(fichero,0,SEEK_END);
Longitud_Codigo_Fuente=ftell(fichero);
if ((Codigo_Fuente=(char *)malloc(Longitud_Codigo_Fuente+1))==NULL)
{
}
fseek(fichero,0,SEEK_SET);
Longitud_Codigo_Fuente=fread(Codigo_Fuente,1,Longitud_Codigo_Fuente,fichero);
fclose(fichero);
*(Codigo_Fuente+Longitud_Codigo_Fuente)=_cr;
Numero=Codigo_Fuente;


while (Numero<Codigo_Fuente+Longitud_Codigo_Fuente)

{


/*Aqui en (*Numero) vas haciendo la transformación a hexadecimal .por ejemplo.


*/
Numero++;

}

Volver arriba
Mensaje    Asunto: un codigo a simple vista perfecto. Responder citando

Ya tio, pero eso lo hago bien yo. Abrirlo y meterlo en el buffer si va. Lo que pasa es como bien dice el compañero es que no cabe entero en el memo. Hay que hacer paginación.
De todas formas si alguien me puede pasar o decirme donde pillar un componente para mostrar en pantalla un archivo o un buffer en forma hexadecimal y con paginación, por fa, me lo pase o me lo diga,
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.