IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Tmemo au format hex


Sujet :

C++Builder

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par d�faut Tmemo au format hex
    Bonjour tout le monde,

    tout d�abord je pr�cise que je travaille avec c++ builder 10 seatle
    je vous explique a peux pr�s ce que je veux en essayant d��tre le-plus claire possible

    sur mon projet j'ai un "opendialogue1" avec lequel je s�lectionne un fichier avec l'extension .hex
    qui s'affiche dans le memo1 , jusqu'ici tout va bien ,
    j'ai bien le nombre de ligne exacte et ce que j�aimerai c'est faire des colonnes de 2 ou 4 chiffre
    au lieux d'avoir genre un truque comme �a :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    :
    :107010000000000000000000000000000000000070
    :1070200004019FE5AA10A0E35520A0E32030A0E3CF
    :10703000A03180E5A03190E5403013E2FCFFFF0A6B
    :107040000130A0E30C3180E50B30A0E3843080E513
    :107050008C1080E58C2080E50130A0E3803080E555
    j'aimerai plut�t un format comme sa c'est plus propre et plus lisible:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    :
    :1070  1000  0000  0000  0000   000   000 0000  000  0000  070
    :1070  0004  19FE  5AA1  0A0E  3552  0A0E 320  0A0E3CF
    :1070  3000  3180  A031  E54   3013   FCFFFF0A  B
    :1070  0000  30A0  E30C  80E50B30A  3843080E  13
    :1070  0008  1080  58C2  80E50130A  803080E5


    j'ai parcourue le net a la recherche de solution mai j'ai vraiment rien trouver ici c'est mon dernier recoure

    voici mon code actuel au cas ou :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    void __fastcall TForm1::BitBtn1Click(TObject *Sender)
    {
     
      AnsiString op=" [ ";
     
      if(OpenDialog1->Execute()) {
      Form1->Caption="Slim SoftProgPic "+op+ OpenDialog1->FileName+" ]";
      AnsiString ExtensionApplication = ExtractFileExt(OpenDialog1->FileName).LowerCase(); // = l'extension".hex"
     
      //debut condition message erreur extension : message d'erreur.
      if(ExtensionApplication!=".hex"){
    	 MessageDlg("Erreur d'extension sur le fichier selectionner [ "+ExtensionApplication+" ]",mtError, TMsgDlgButtons() << mbOK, 0);return;
      }//fin de condition si message d'erreur
     
     
       TStringList *Liste    =   new TStringList;
       Liste->LoadFromFile(OpenDialog1->FileName);
       int NbLignes          =   Liste->Count;
       AnsiString NomComplet =   ExtractFileName(OpenDialog1->FileName);//Extraire nom du fichier
       AnsiString Chaine     =   Liste->Strings[NbLignes-1];
       ProgressBar1->Min     =   0;
       ProgressBar1->Max     =   NbLignes;
       Memo1->Font->Size     =   10;
       Memo1->Font->Name     =  "arial";
       Memo1->Font->Color    =   clBlue;
     
     
     
     
     
     
     
      for(int i=0;i<=NbLignes;i++){
     
    		ProgressBar1->Position++; // Incrémente la position de la ProgressBar1
    		Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
     
     
    		if(i==NbLignes){ //si chargement fichier terminer
    		Memo1->Font->Color=clBlue;
    		LabelCompteLigneFichier->Caption="Nombre de lignes : "+IntToStr(NbLignes);
    		int FichierHandle = FileOpen(OpenDialog1->FileName, fmOpenRead);
    		LabelTailleFichier->Caption=NomComplet+op+FormatFloat("### ### ### Ko",FileSeek(FichierHandle, 0, 2))+" ] ";
    		}//*********************************************************************
    		else{//si chargement fichier  pas terminer
    		Memo1->Font->Color=clGray;
    		LabelCompteLigneFichier->Caption="Chargement du fichier...";
    		}
     
     
       }
     
     
     }

  2. #2
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    En regardant la m�ga liste Fr0sT-Brutal/awesome-delphi, on trouve ATViewer

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par d�faut
    Citation Envoy� par foetus Voir le message
    En regardant la m�ga liste Fr0sT-Brutal/awesome-delphi, on trouve ATViewer
    Merci � toi je vais de ce pas y jeter un coup d'oeil
    Je te tien au courant.

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par d�faut
    salut je viens de tester ATviewr du moin j'ai essayer, mai impossible a faire marcher avec c++builder seatle
    merci encore d'avoir essayer si il y a une autre solution je suis preneur en attendant je cheche encore de mon coter comment faire

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 412
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    D�j� pour commencer, mets un filtre dans ton OpenDialog pour ne voir, ne s�lectionner et n'ouvrir que des *.HEX !

    Ton fichier *.HEX c'est du HEX INTEL (donc avec son formatage sp�cifique par ligne genre :BBAAAATTHHHHHH.....HHHHCC) ?

    Dans ce cas, tu as juste besoin de TStringGrid (d'apr�s ce que je me souviens de mon BCB 3 Pro) !
    Au moins, tous les champs seront bien s�par�s ce qui t'�conomise la couleur !
    Il faut quoi ... dix minutes pour le faire, le code pour extraire les donn�es par champs ... c'est pas compliqu� quand m�me!

    A plus !

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par d�faut
    Citation Envoy� par henderson Voir le message
    Salut !

    D�j� pour commencer, mets un filtre dans ton OpenDialog pour ne voir, ne s�lectionner et n'ouvrir que des *.HEX !
    ...
    Bonjour henderson,
    Merci pour ton message ,pour ce qui est du filtre comme ce n'�tait pas le probl�me j'avais l'intention de le faire apr�s avoir trouver la solution pour mon format hex.

    Et pour le Tstringrid je ne sais pas dutout comment faire pour mettre au format que je souhaite malgr� toute mes recherche je ne trouve pas d 'explication claire sur ce sujet j'ai trouver comment faire pour convertir une cha�ne de caract�res en hex mai pour ce qui es de convertir les ligne se trouvant dans un fichier je ne trouve rien la dessus.

    Ensuite je ne doute pas que se soit pas compliquer mai pour sa faut qu' on m explique au moin une fois.
    C'est comme dire a un enfant combien font 2+2
    Si on lui a jamais expliquer il le sera jamais et pourtant c est pas compliquer comme tu dis

    En tout cas merci pour ton message
    Cdt.

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 412
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    TForm, TMenu, TOpenDialog et TMemo

    Une simple m�thode suffit en r�ponse au OnClick de Open (MenuItem) !
    Ici, je traite au format HEX-INTEL.
    Mets : Memo1::ScrollBars sur ssBoth !
    Memo1::Align sur alClient !
    Memo1::Font sur Courrier New : 11 ou 12

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    void __fastcall TForm1::Open1Click(TObject *Sender)
    {
    //
    int c;
    int j, nb;
    AnsiString N;
    AnsiString BB;
    AnsiString AA;
    AnsiString HH;
    AnsiString TT;
    AnsiString CC;
    AnsiString TAB = "  ";
    if(OpenDialog1->Execute())
        {
        Memo1->Lines->Clear();
        Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
        for(j=0; j<Memo1->Lines->Count; j++)
            {
            N = Memo1->Lines->Strings[j];
            BB = N.SubString(1, 3);
     
    	// peut-être peut-on mieux faire pour caluler nb 
            c = BB[2];
            if(c <= '9')c = c - '0';
            else c = c - 'A' + 0xA;
            nb = c;
     
            c = BB[3];
            if(c <= '9')c = c - '0';
            else c = c - 'A' + 0xA;
            nb = (nb*16) + c;
     
            AA = N.SubString(4,4);
            TT = N.SubString(8,2);
            HH = N.SubString(10, nb * 2);
            CC = N.SubString(10 + (nb*2), 2);
            N = BB + TAB + AA + TAB + TT + TAB + HH + TAB + CC;
            Memo1->Lines->Strings[j] = N;
            }
        }
    }
    Pour info ce code est compil� et test� avec BCB 3 Pro sous WINDOWS XP !

    Je te laisse d�cliner tout �a sur un TStringGrid (consultes les propri�t�s de TStringGrid ... tu comprendras !)!
    Par contre, dans ce cas, il faut utiliser une TStringList pour charger le fichier
    Lorsque tu en as termin� avec le remplissage des cellules avec les sous-cha�nes, la TStringList ne sert plus � rien !

    A plus !

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par d�faut
    Merci infiniment , henderson je vais essayer d'adapter tout sa a ma version de c++ builder
    En m�me temps je vais d�cortiquer ce code pour voir un peut le fonctionnement je te tien courant
    Encore 1000 merci

Discussions similaires

  1. Format Intel HEX en binaire
    Par Shikamaru86 dans le forum C
    R�ponses: 4
    Dernier message: 13/04/2007, 18h24
  2. afficher des bytes sous format hex
    Par zantar dans le forum MFC
    R�ponses: 2
    Dernier message: 21/12/2005, 12h54
  3. Format d'un exe pour DOS et pour Windows
    Par Alfhiger dans le forum Assembleur
    R�ponses: 4
    Dernier message: 12/06/2002, 11h57
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    R�ponses: 5
    Dernier message: 20/05/2002, 00h11
  5. R�ponses: 3
    Dernier message: 06/05/2002, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo