Ir para conteúdo
Fórum Script Brasil
  • 0

Help c++Builder hem em um memo


cgm2k7

Pergunta

Olá pessoal mais uma vez eu aqui pedindo ajuda..
É o seguinte estou desenvolvendo um aplicativo e preciso visualizar os arquivo que usuário está editando em Hex e ASCII, assim com na imagem veja abaixo:
Sem_t_tulo.png

Exatamente como na imagem só que em um memo ou qualquer outro componente. Achei este código na net mas não estou conseguido adapta-lo para abrir em um memo. Se alguém pude me ajudar... Agradeço.

# include <cstdlib>
# include <iostream>
# include <iomanip>
# include <fstream>
# include <ctime>
	using namespace std;
	int main ( long argc, char *argv[] );
void handle ( char file_in_name[] );
void timestamp ( void );
	int main ( long argc, char *argv[] )
{
  char file_in_name[80];
  int i;
  bool VERBOSE = true;
	  if ( VERBOSE )
  {
    timestamp ( );
	    cout << "\n";
    cout << "HEXDUMP:\n";
    cout << "  C++ version\n";
    cout << "\n";
    cout << "  Compiled on " << __DATE__ << " at " << __TIME__ << ".\n";
    cout << "\n";
    cout << "  Produce a hexadecimal dump of a file.\n";
  }
//
//  If the input file was not specified, get it now.
//
  if ( argc <= 1 )
  {
    cout << "\n";
    cout << "HEXDUMP:\n";
    cout << "  Please enter the name of a file to be analyzed.\n";
	    cin.getline ( file_in_name, sizeof ( file_in_name ) );
	    handle ( file_in_name );
  }
//
//  Otherwise, get the file(s) from the argument list.
//
  else
  {
    for ( i = 1 ; i < argc ; ++i )
    {
      handle ( argv[i] );
    }
  }
	  if ( VERBOSE )
  {
    cout << "\n";
    cout << "HEXDUMP:\n";
    cout << "  Normal end of execution.\n";
	    cout << "\n";
    timestamp ( );
  }
  system("pause");
  return 0;
}
	void handle ( char file_in_name[] )
{
  long int addr;
  unsigned char buffer[20];
  long int cnt;
  long int cnt2;
  ifstream file_in;
  long n;
//
//  Open the file.
//
  file_in.open ( file_in_name );
	  if ( !file_in )
  {
    cout << "\n";
    cout << "HANDLE - Fatal error!\n";
    cout << "  Cannot open \"" << file_in_name << "\"\n";
    return;
  }
     
  cout << "\n";
  cout << "Hexdump of \"" << file_in_name << "\":\n";
  cout << "\n";
  cout <<
    "Address               Hexadecimal values                  Printable\n";
  cout <<
    "-------  -----------------------------------------------  -------------\n";
  cout << "\n";
//
//  Dump the file contents.
//
  addr = 0;
	  while ( 1 )
  {
    file_in.read ( ( char * ) buffer, 16 );
	    cnt = file_in.gcount();
	    if ( cnt <= 0 )
    {
      break;
    }
//
//  Print the address in decimal and hexadecimal.
//
    cout << setw(7) << ( int ) addr << "  ";
	    addr = addr + 16;
//
//  Print 16 data items, in pairs, in hexadecimal.
//
    cnt2 = 0;
    for ( n = 0; n < 16; n++ )
    {   
      cnt2 = cnt2 + 1;
      if ( cnt2 <= cnt )
      {
        cout << hex << setw(2) << setfill ( '0' ) << ( int ) buffer[n];
      }
      else
      {
        cout << "  ";
      }
      cout << " ";
    }
	    cout << setfill ( ' ' );
//
//  Print the printable characters, or a period if unprintable.
//
    cout << " ";
    cnt2 = 0;
    for ( n = 0; n < 16; n++ )
    {
      cnt2 = cnt2 + 1;
      if ( cnt2 <= cnt )
      {
        if ( buffer[n] < 32 || 126 < buffer[n] )
        {
          cout << '.';
        }
        else
        {
          cout << buffer[n];
        }
      }
    }
    cout << "\n";
    cout << dec;
	    if ( file_in.eof ( ) )
    {
      break;
    }
	  }
  file_in.close ( );
	  return;
}
	void timestamp ( void )
{
# define TIME_SIZE 40
	  static char time_buffer[TIME_SIZE];
  const struct tm *tm;
  size_t len;
  time_t now;
	  now = time ( NULL );
  tm = localtime ( &now );
	  len = strftime ( time_buffer, TIME_SIZE, "%d %B %Y %I:%M:%S %p", tm );
	  cout << time_buffer << "\n";
  return;
# undef TIME_SIZE
}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...