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

Visual C++ Discussion :

conversion de LPVOID � CHAR et de CHAR � BYTE


Sujet :

Visual C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    �tudiant
    Inscrit en
    Mai 2008
    Messages
    29
    D�tails du profil
    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 29
    Par d�faut conversion de LPVOID � CHAR et de CHAR � BYTE
    Salut
    Suis debutant en c++, je develloppe sous visual c++ 2008.
    J'obtiens les erreurs suivantes:

    definitions:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                     static DWORD WINAPI Connect2FTPDataProc(LPVOID lpParam)
    {
        DWORD dwRecu=0, dwEtape=0;
        PROCDATA *MyProcData;
        HANDLE hFile1;
        DWORD dwSizeFile, rw, dwtimer=100, dwport=0;
        int iResult=0, isent;
        char buffer[8192], sztmp[512], *c1, *szBuff;
    ligne error: szBuff = VirtualAlloc(0, dwSizeFile+1, MEMDISPO, PAGE_READWRITE);
    **********************************************************
    compilateur:
    error C2440: '=' : cannot convert from 'LPVOID' to 'char *'
    **********************************************************
    la deuxi�me conversion non reussie:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DWORD __stdcall TypeA(char *szName) 
    {
      BYTE buf[8] = {0};
      BYTE *c, *p, *last, a;
      DWORD d, h;
      c = (BYTE*) szName;
      while(*c) c++; 
      c--; 
      p = szName + 1 ;
    **********************************************************
    compilation: cannot convert from 'char *' to 'BYTE *'
    **********************************************************
    QQ1 aurait.il la gentillesse de m'�claircir?
    Merci d'avance

  2. #2
    Membre �prouv�
    Inscrit en
    Avril 2008
    Messages
    155
    D�tails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Par d�faut
    la prochaine fois pense a mettre les balises de code car c'est pas clair

    concernant l'erreur c'est assez explicite quand meme
    compilateur:
    error C2440: '=' : cannot convert from 'LPVOID' to 'char *'

  3. #3
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    il suffit de faire un cast:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    szBuff = (char *)VirtualAlloc(0, dwSizeFile+1, MEMDISPO, PAGE_READWRITE);

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Sauf qu'en C++, on utilise les casts C++.
    • void* -> nimportequoi* : static_cast<>
    • uneclasse* -> uneclassefille* : static_cast<> aussi.
    • untruc* -> unautretruc* : reinterpret_cast<>.
    • const machin* -> machin* : const_cast<>.

    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    szBuff = static_cast<char *>(VirtualAlloc(0, dwSizeFile+1, MEMDISPO, PAGE_READWRITE));
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    tu ne peux t'emp�cher de donner des le�ons, tu crois vraiment que je l'ignore ?
    son code m'avait tout l'air d'un code "C" plut�t qu'un code C++, et je n'en fait pas plus cas que �a...

  6. #6
    Membre averti
    �tudiant
    Inscrit en
    Mai 2008
    Messages
    29
    D�tails du profil
    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 29
    Par d�faut
    Merci les gars, pas besoin de ce disputer , je vous remercie dans tous les cas pour votre sollicitude.Vraiment gentil.

    Par contre il reste un second probl�me qui me reste � r�soudre, gr�ce � la proposition de FARSCAPE j'ai pu r�gler ce premier probl�me, le deuxi�me �tait le suivant :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    DWORD __stdcall TypeA(char *szName)
    {
    	BYTE buf[8] = {0};
    	BYTE *c, *p, *last, a;
    	DWORD d, h;
    	c = (BYTE*) szName;
    	while(*c) c++;
    	c--;
    	p = szName + 1 ;
    }
    Ici p est un (byte*) szName un char*,il devrait me retourner un �l�ment de m�me type que p, j'ai essay� comme je pouvais rien � faire certainement � cause de mes connaissances limit�es j'y arrive pas.
    Voil� l'erreur que le compilateur me fournit :
    error C2440: '=' : cannot convert from 'char *' to 'BYTE *'
    1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    Merci d'avance


    EDIT PetitPapaNo�l : Merci de penser aux balises CODE (bouton #), pour une meillleure lisibilit� !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Conversion d'un type word en char
    Par bleuerouge dans le forum D�buter
    R�ponses: 6
    Dernier message: 20/06/2008, 15h52
  2. lecture de char au lieu de byte dans la fonction read
    Par andromeda dans le forum Entr�e/Sortie
    R�ponses: 4
    Dernier message: 20/07/2007, 20h02
  3. R�ponses: 5
    Dernier message: 09/05/2007, 13h35
  4. [Cl� de registre] Conversion char* vers unsigned char*
    Par The Lord of Nesquik dans le forum C
    R�ponses: 7
    Dernier message: 03/07/2006, 23h30
  5. vector<unsigned char> et unsigned char* : conversion ?
    Par zax-tfh dans le forum SL & STL
    R�ponses: 5
    Dernier message: 15/01/2006, 10h43

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