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 :

Problème de typage


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 92
    Par défaut Problème de typage
    Salut,

    J'ai un souci de typage, j'essaie pleins de trucs et rien n'y fait.

    Voilà, j'ai un fichier *.txt contenant des données GPS. Je souhaite les parser pour les mettre au format adhéquate pour un autre logiciel.

    J'ouvre donc ce fichier txt avec les fonctions suivantes :
    - CreateFile
    - CreateFileMapping
    - MapViewOfFile
    Laquelle me retourne un pointeur (pMemory) de type LPVOID qui pointe au début des données mappées en mémoire.

    J'alloue un autre espace de byte vides en mémoire avec les fonctions suivante :
    - HeapAlloc
    Laquelle elle aussi me renvoie un pointeur (pAllocMemory) de type LPVOID


    J'ai donc deux pointeurs de même type qui pour l'un pointe sur les données brutes et l'autre sur un espace de bytes vides. Tout est prêt pour le traitement des données.

    Sauf que je n'arrive pas à passer un byte de l'une à l'autre de ces zones.
    Ca par exemple ça ne fonctionne pas.
    LPVOID pMemory;
    LPVOID pAllocMemory;


    LPBYTE cb = (LPBYTE) pMemory;
    (LPBYTE) pAllocMemory = cb;

    Comment manipuler de bytes, en assembleur aucun souci, par contre en C++ c'est super casse pied le typage est vraiment quelque chose de chiant.


    Merci.

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Citation Envoyé par Morgatte Voir le message
    Voilà, j'ai un fichier *.txt contenant des données GPS. Je souhaite les parser pour les mettre au format adhéquate pour un autre logiciel.

    J'ouvre donc ce fichier txt avec les fonctions suivantes :
    - CreateFile
    - CreateFileMapping
    - MapViewOfFile
    L'ouverture du fichier avec CreateFile est suffisante. Après on fait un ReadFile.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 92
    Par défaut
    C'est ok, J'ai trouvé.

    Non je voulais que tout soit traité en mémoire pour que ce soit plus rapide. En plus je souhaite traiter des bytes donc des données au delà des simples caractères.
    D'ailleurs MapViewOfFile retourne un pointeur de type VOID, c'est pas pour rien c'est justement pour avoir la possibilité de traiter tous types de données et non pas seulement des char*.

    Mais c'est ok j'ai trouvé. Merci d'avoir répondu.
    Bye.

    *((BYTE*)pDest+iD) = *((BYTE*)pSource+iS);

  4. #4
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Citation Envoyé par Morgatte Voir le message
    Non je voulais que tout soit traité en mémoire pour que ce soit plus rapide.
    On utilise CreateFileMapping pour partager de la mémoire entre deux processus, est-ce le cas ?

    Si ce n'est pas le cas, cela n'a aucun intérêt. Quand on fait un ReadFile, les données lues sont aussi en mémoire... D'ailleurs il n'y a aucun Benchmark qui confirme ou non que l'un est plus rapide que l'autre.

    Citation Envoyé par Morgatte Voir le message
    c'est justement pour avoir la possibilité de traiter tous types de données et non pas seulement des char*.
    Voici la définition de BYTE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef unsigned char BYTE;   // 8-bit unsigned entity.
    typedef BYTE *        PBYTE;  // Pointer to BYTE.
     
    BYTE Ch;                      // Declare a variable of type BYTE.
    PBYTE pbCh;                   // Declare a pointer to a BYTE
                                  //  variable.
    http://msdn.microsoft.com/en-us/libr...v=vs.100).aspx

    Je ne vois pas vraiment de différence... un BYTE est un unsigned char...

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/02/2007, 17h56
  2. problème de typage
    Par sissi25 dans le forum Servlets/JSP
    Réponses: 15
    Dernier message: 10/01/2007, 12h59
  3. [Typage] Problème avec typage de variables
    Par elitemedia dans le forum Langage
    Réponses: 2
    Dernier message: 17/11/2006, 02h18
  4. [Tableaux] Problème de typage sur un float
    Par Lomu dans le forum Langage
    Réponses: 1
    Dernier message: 06/11/2006, 11h47
  5. [SQL2005] problèmes de typage de colonne en XML
    Par titouc330 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/10/2006, 12h52

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