MORSEPLAYER, JOUER UN MESSAGE MORSE

Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 - 2 déc. 2007 à 22:14
christophedlr Messages postés 31 Date d'inscription dimanche 4 décembre 2005 Statut Membre Dernière intervention 6 mars 2014 - 28 janv. 2014 à 12:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44897-morseplayer-jouer-un-message-morse

christophedlr Messages postés 31 Date d'inscription dimanche 4 décembre 2005 Statut Membre Dernière intervention 6 mars 2014
28 janv. 2014 à 12:01
Ca semble intéressant mais le morse ce n'est pas un caractère pour un caractère, car un seul caractère alphabétique, en morse peut correspondre à un point, une barre ou un ensembles de points et barres ; la description est fausse dans le sens où ce n'est pas 1 pour 1 ;) Par contre c'est intéressant comme idée juste pour montrer un peu ce qu'est le morse ;)
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
14 déc. 2007 à 20:02
Ah petite idée,
celà marchera peut-être en utilisant un thread pour jouer les beeps du message morse ...
C'est juste une idée come ça!... ;)
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
14 déc. 2007 à 19:57
Salut DESK_BSD,
moi aussi j'ai déjà eut un problème comparable avec mon vista: il ne faisait pas les beeps mais n'a jamais planté... Je ne sais pas du tout d'où pourrait venir le problème... Si quelqu'un le sait merci de me le transmettre...
A+ et encore merci pour l'information...
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 déc. 2007 à 09:16
Yop,

Ne fonctionne pas chez moi. Je suis sous vista business. Je ne fait que taper sos dans la zone de text et cliquer sur ok et le programme plante.
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
4 déc. 2007 à 20:00
D'accord merci pour l'information!
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
4 déc. 2007 à 19:48
Tu verifies que le pointeur ne soit pas null
if(!renvoie) //Erreur d'alloc..

Neo_Fr
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
4 déc. 2007 à 19:44
Salut GAMEMONDE,

j'ai essayé de remplacer (comme vous me l'avez suggéré) :
if( temp<0 ) temp += 256;
int temp2 = strlen( CodeMorse[temp] );
par:
strlen( CodeMorse[(unsigned char)temp] );

mais celà ne fonctionne pas (enfin avec moi et dev-c++):
exemple si le texte saisie est: ççççççç, rien ne se passe (aucun beep pour le 'ç')...
tandis qu'avec mon ancien code celà fonctionnait...

Sinon, je ne comprend de quoi voulait parler Brunews par TOUJOURS VERIFIER UNE ALLOC ?
Que fallait-il ajouter pour vérifier cette alloc?

Sinon, pour les problèmes de libération de mémoire abordés par Neo_Fr dans son premier commentaire, je suis en train de regarder! ;)

A+ et merci pour toutes ces indications
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
3 déc. 2007 à 04:04
if( temp<0 ) temp += 256;
int temp2 = strlen( CodeMorse[temp] );
plus rapide en fesant

int temp2 = strlen(CodeMorse[(unsigned char)temp)

et attention tu ne vérifie jamais si la valeur vaux zéro si la personne rentre rien ton programme fonctionnera pas bien . lorsque tu ajoutes un code sur cppfrance tu dois faire attention

- optimisation de code
- erreur de retour de fonction
- libération de la memoire
- il doit y avoir des commentaires ( pas de problème de ton coté ) car un code posté doit être en but premier d'apprendre au autre et non pour soi
- le code doit apporté quelque chose de nouveau sur le site pas de redondance de code
car les serveurs coute cher
- faire attention a Brunews il est très grincheux ;)

alors amène nous un code plus propre mieux organisé et il sera bien pris par la communauté

allez bonne continuation
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 déc. 2007 à 22:36
char enMorse[TailleMorse+1];
Quelle horreur, plus aucun controle de la mémoire, autant aller faire de l'interprété.

renvoi = malloc(strlen(enMorse) + 1);
strcpy(renvoi,enMorse); // TOUJOURS VERIFIER UNE ALLOC !!!
return renvoi;

char * partition = ConvertirEnMorse( partitionTemp );
IL EST OU LE free(partition) ???

if( IsDlgButtonChecked( hDlg, IDR_FERMER ) ) killHWND = TRUE;
else killHWND = FALSE;
Inutile d'enregistrer ceci en début de procédure puisque c'est en sortie qu'on fermera ou non.

Le C est le langage PRO, ce qui implique qu'on agite qlq neurone avant les doigts sur le clavier. Le nbr de caractères obtenus par GetWindowText() n'est même pas vérifié pour savoir si on appelle ConvertirEnMorse(), etc, etc...
Laisse la production de masse aux VBistes et autres Csharpiens, sur cppfrance c'est la qualité qu'il faut montrer en sources. Tu en es très certainement capable alors montre le nous en arrangeant tout ceci et en prenant le temps de nous proposer nettement mieux pour la suite.

Bonne continuation.
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
2 déc. 2007 à 22:24
Chez moi ton prog se lance pas...
En rajoutant InitCommonControls(); ds WinMain ca marche..

Neo_Fr
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
2 déc. 2007 à 22:14
Ta fonction ConvertirEnMorse ne libere pa la memoire qu'elle alloue..
Tu devrait plutot passer un pointeur en argument pour le resultat et pourquoi utilise tu malloc?
L'equivalent win32 c'est HeapAlloc ou VirtualAlloc..

Sinon l'idée est pa mal :]

Neo_Fr
Rejoignez-nous