Jump to content
cgm2k7

Help c++Builder hem eum um memo

Recommended Posts

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
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By TommyOne
      Boa noite, bom eu tenho o site do meu servidor e a galera gosta de colocar cor HEX no nome para que no jogo fique bonito, mas no site fica todo cagado, eu gostaria de saber se tem como eu fazer para o site reconhecer esse estilo de cor, ao invés dele mostrar o código mostrar a cor em si,



      O nome ai é: Gabriell Henrique colorido mas como podem ver ele mostra o código de cor, eu gostaria que ficasse a cor.
    • By PedroSilva
      Olá pessoal, queria saber como funciona a manipulação/edição/modificação de arquivos .bin da mesma forma que via Hex.

      Tipo assim, abro esses arquivos .bin no Hex Workshop e faço as alterações que eu quero e depois salvo o arquivo modificado.

      Depois importo eles para o jogo (São arquivos de um jogo de PS2) e funciona normal com as alterações dos arquivos via Hex.

      Então é isso, queria criar um programa que fizesse essas alterações, no caso um programa editor desse jogo.

      Eu já sei o passo à passo de cada modificação e etc dos arquivos, então quero que o programa faça o trabalho por mim.

      Agradeço qualquer informação, um Abraço! 
       
    • By fernandohrp
      Boa tarde a todos!
      Estou desenvolvendo um software que se comunica com uma balança toledo.
      Eu instalei uma extensão no xampp ( direct io) que faz essa comunicação.
      Estou conseguindo comunicar normal com a balança.
      Como protocolo, preciso enviar um ASCII (05) ou seja, um parametro ENQ para a balança, então ela me retorna o peso.
      Mas, como fazer isso em php?
      Através de um terminal de testes, eu consigo fazer isso:
      - no programa eu digito: "05" , e seleciono a opção "hex" e ele envia essa hex para a balança e imediatamente me retorna o peso dentro do próprio programa.
      Mas em linguagem php não sei como isso pode funcionar.
       
      Resumindo: Preciso mandar um Hex(05) para a balança.
      Mas como faço um atributo com esse valor em php?
       
      Muito obrigado desde já!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.