Besoin d'aide pour résoudre une erreur C2664

Résolu
jalmjj Messages postés 6 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 8 mai 2007 - 21 mars 2007 à 23:42
jalmjj Messages postés 6 Date d'inscription mardi 20 février 2007 Statut Membre Derniè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.

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 mars 2007 à 00:08
WriteFile (g_hcom, buffer, nbytestowrite, (DWORD*) nbyteswritten, NULL);

ciao...
BruNews, MVP VC++
3
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
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.
3
jalmjj Messages postés 6 Date d'inscription mardi 20 février 2007 Statut Membre Derniè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.
0
Rejoignez-nous