Je voudrais avoir un peut d'aide aussi pour la convertion hexa et binaire comment je pourrai proceder pour mon programme
Je voudrais avoir un peut d'aide aussi pour la convertion hexa et binaire comment je pourrai proceder pour mon programme
Voilà une solution peut etre pas des plus optimal, mais elle devrait fonctionner:
A utiliser de la facon suivante :
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 AnsiString HexaToBinaireChar( char aHex ) { switch( aHex ) { case '0' : return( "0000" ); case '1' : return( "0001" ); case '2' : return( "0010" ); case '3' : return( "0011" ); case '4' : return( "0100" ); case '5' : return( "0101" ); case '6' : return( "0110" ); case '7' : return( "0111" ); case '8' : return( "1000" ); case '9' : return( "1001" ); case 'A' : return( "1010" ); case 'B' : return( "1011" ); case 'C' : return( "1100" ); case 'D' : return( "1101" ); case 'E' : return( "1110" ); case 'F' : return( "1111" ); default : return( "" ); } } AnsiString HexaToBinaire( AnsiString aHex ) { aHex = UpperCase( aHex ) ; AnsiString result ="" ; for( int i=1; i<= aHex.Length(); i++ ) { result = result + HexaToBinaireChar( aHex[i] ); } return( result ) ; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part Edit1->Text = HexaToBinaire( "FF" );
désolé mais sa serait possible d'avoir quelque commentaire car j'ai un peut tu mal a comprendre et j'ai essayer le copier coller mais fonctionne pas trop il trouve des erreurs donc je pense qu'il doit manquer quelque truc donc si je pourrai avoir quelque commentaire merci
Qu'est ce que tu as comme erreur? Parce que il n'y a rien de particulier d'utiliser.
As tu déclaré les fonctions avant de les appeller?
voici mon . cpp
voici mon .h
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 //Declaration de variable AnsiString valhexa,valbinaire; //Recuperation de la valeur de Edit1 dans valhexa valhexa=Form1->Edit1->Text; AnsiString HexaToBinaireChar( char aHex ) { switch( aHex ) { case '0' : return( "0000" ); case '1' : return( "0001" ); case '2' : return( "0010" ); case '3' : return( "0011" ); case '4' : return( "0100" ); case '5' : return( "0101" ); case '6' : return( "0110" ); case '7' : return( "0111" ); case '8' : return( "1000" ); case '9' : return( "1001" ); case 'A' : return( "1010" ); case 'B' : return( "1011" ); case 'C' : return( "1100" ); case 'D' : return( "1101" ); case 'E' : return( "1110" ); case 'F' : return( "1111" ); default : return( "" ); } } AnsiString HexaToBinaire( AnsiString aHex ) { aHex = UpperCase( aHex ) ; AnsiString result ="" ; for( int i=1; i<= aHex.Length(); i++ ) { result = result + HexaToBinaireChar( aHex[i] ); } return( result ) ; } }
Comme erreur j'ai
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 //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // Composants gérés par l'EDI TLabel *Label1; TLabel *Label2; TLabel *Label3; TEdit *Edit1; TEdit *Edit2; TButton *Button1; void __fastcall Button1Click(TObject *Sender); private: // Déclarations de l'utilisateur public: // Déclarations de l'utilisateur __fastcall TForm1(TComponent* Owner); AnsiString HexaToBinaire( char aHex ); AnsiString HexaToBinaireChar( AnsiString aHex ); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif
Utilisation impropre de typedef 'AnsiString'
; manquant dans l'instruction
Ligne en rouge
Si tu a déclarer tes méthodes dans ta classe (comme tu l'a fais dans la partie public de ton .h) tu dois ajouter "TForm1" avant tes méthode dans ton *.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 AnsiString TForm1::HexaToBinaireChar( char aHex ) { //Le code } AnsiString TForm1::HexaToBinaire( char aHex ) { //Le code }
J'ai reformuler le code
SI je marque 1,2,3,.....
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 //Declaration de variable AnsiString valhexa,valbinaire; //Recuperation de la valeur de Edit1 dans valhexa valhexa=Form1->Edit1->Text; //Test sur la valeur d'hexa rentrer dans l'edit if(valhexa=='0') valbinaire="0000"; if(valhexa=='1') valbinaire="0001"; if(valhexa=='2') valbinaire="0010"; if(valhexa=='3') valbinaire="0011"; if(valhexa=='4') valbinaire="0100"; if(valhexa=='5') valbinaire="0101"; if(valhexa=='6') valbinaire="0110"; if(valhexa=='7') valbinaire="0111"; if(valhexa=='8') valbinaire="1000"; if(valhexa=='9') valbinaire="1001"; if(valhexa=='A') valbinaire="1010"; if(valhexa=='B') valbinaire="1011"; if(valhexa=='C') valbinaire="1100"; if(valhexa=='D') valbinaire="1101"; if(valhexa=='E') valbinaire="1110"; if(valhexa=='F') valbinaire="1111"; //Affichage du resultat dans Edit2 Form1->Edit2->Text=valbinaire ;
Sa fonctionne sa maffiche le bon binaire par contre si je marque A2, 1A,ect..
La sa ne marche pas je voudrais savoir comment je pourrai faire pour que sa me donne le bon binaire merci
Il y a deux fonction :
AnsiString HexaToBinaireChar( char aHex )
C'est une fonction qui prend un paramètre un char, et qui retourne la valeur binaire (sur 4 caractères)
Cette fonction ne dois pas être appelé directement!!
AnsiString HexaToBinaire( AnsiString aHex )
C'est une fonction qui prend un paramètre un AnsiString, qui parcours cette chaîne caractère par caractère, et qui fais appelle a la fonction HexaToBinaireChar pour chaque charactère.
Donc tu a juste a déclarer ces fonctions, puis pour les utiliser tu fais simplement:
Je ne vois pas ou tu bloque, il n'y a rien a modifier, les fonctions sont déja écrite!
Code : Sélectionner tout - Visualiser dans une fenêtre à part Edit1->Text = HexaToBinaire( Edit2->Text );
Ok very good par contre juste un truc est ce que tu peux me marquer all commentaire car il y a des choses que je n'est pas compris surtout dans la seconde fonction
Encore merci
Version commentée :
Pour comprendre exécute en mode pas à pas (F8 ou F7 pas à pas avancé) et regarde les différentes valeurs a chaque fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 AnsiString HexaToBinaire( AnsiString aHex ) { aHex = UpperCase( aHex ) ; //on met tout en majuscule (au cas ou il y a des minuscule comme 3f => 3F) AnsiString result = "" ; for( int i=1; i<= aHex.Length(); i++ ) //on parcours la chaine aHex caractère par caractère, donc de 1 (premier caractère) à aHex.Length() (nombre de caractère dans la chaîne) { result = result + HexaToBinaireChar( aHex[i] ); // pour chaque caractère hexa on recherche la correspondance binaire avec la fonction HexaToBinaireChar et on l'ajoute à la suite } return( result ) ; // on retourne la chaine }
Si en entrée tu as par exemple "F03", il y aura 3 itérations (car il y a 3 caractères) dans la boucle FOR, et la valeur de result seront :
Départ : result = ""
1ère itération: result = "1111"
2ème itération: result = "1111" + "0000" = "11110000"
3ème itération: result = "11110000" + "0011" = "111100000011"
Possibiliter de rester en contacte avec toi via msn ou mail???
Je passe régulièrement sur ce forum, donc si jamais tu rencontre un nouveau problème pose une nouvelle question ici.
Tu trouvera quelqu'un pour te répondre.
[je ne donne pas de coordonnées personnelles, désolé.]
Partager