jalmjj
Messages postés6Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 8 mai 2007
-
21 mars 2007 à 23:42
jalmjj
Messages postés6Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 8 mai 2007
-
25 mars 2007 à 21:21
Bonjour, je suis nouveau ici et débutant en C++ (je suis étudiant en IUT Génie Electrique et Informatique Industrielle et nous n'avons appris que les bases du C). Je suis en train de faire un programme utilisant la liaison série pour recevoir des données et lorsque je compil, je me retrouve avec une erreur C2664 que je n'arrive pas résoudre, donc je solicite votre aide.
Voici le problème se trouve au niveau de ma fonction de lecture du port (et la même au niveau de l'envoi sur le port) :
// Fonction de lecture du port
BOOL Readport (void *buffer, int nbytestoread, int *nbytesread)
{
return ReadFile (g_hcom, buffer, nbytestoread, *nbytesread, NULL);
}
// Fonction d ecriture sur le port
BOOL Writeport (void *buffer, int nbytestowrite, int *nbyteswritten)
{
return WriteFile (g_hcom, buffer, nbytestowrite, *nbyteswritten, NULL);
}
Et lorsque que je compil, j'ai le message suivant :
error C2664 : 'ReadFile' : cannot convert parameter 4 from 'int' to 'unsigned long*' , conversion from integral type to pointer types requires reinterpret_cast , c-style cast or function style-cast
La même erreur se produit pour le WriteFile.
J'ai essayé de mettre (unsigned long*) NULL ou de passer par un pointeur mais cela ne change rien??? Je ne sais pas si cela peut vous aidez mais je programme sous microsoft visual c++ 6.0.
Merci d'avance pour votre aide.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 22 mars 2007 à 16:17
Salut,
Ton erreur vient du fait que tu passes la 'valeur' de la variable pointé par nbytesread, il faut lever l'opérateur '*' pour passer le pointeur lui-même.
Et comme Brunews le montre, puisque il faut un unsigned long, le cast s'impose.
jalmjj
Messages postés6Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 8 mai 2007 25 mars 2007 à 21:21
Merci à BruNews et yann_lo_san pour vos réponses et vos explications. J'ai en effet remplacer cet erreur dans mon programme et cela fonctionne bien. Encore merci à vous deux.