begin process at 2012 02 09 21:32:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Structure et FileMapping


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Structure et FileMapping

mercredi 8 mars 2006 à 14:03:20 | Structure et FileMapping

Loukhass

Bonjour. Je dois utiliser le filemapping pour transmettre un tableau de structure d'un programme à un autre.

Mon premier probleme était le fileMapping. Mais j'ai trouvé un code sur le net qui permettait de passer des tableaux d'entier d'un programme a un autre. J'ai modifié le programme de façon a ce qu'a la place, d'entier, le tableau contienne des structures.

La compilation passe très bien, mais il y a une erreur à l'execution. Je ne vois pas d'ou elle peut venir... Voici mon code:


#define MAXMEMORY 2

    //Structure décrivant un avatar
    typedef struct t_avatar {
        string idSelection;        //Id du personnage
        int posX;                //Absisse de la position du personnage
        int posY;                //Ordonnée de la position du personnage
        int Orientation;        //Orientation de la position du personnage
    };

    //structure a transmettre
    struct MEMORYDATA
    {
        t_avatar data[MAXMEMORY];
    };


int main(int argc, char* argv[])
{
    //Declaration des variables
    HANDLE fileHandle;
    HANDLE mapFileHandle;
    struct MEMORYDATA *mdata = NULL;
   
    t_avatar Avatar1;
    t_avatar Avatar2;
   
    //Initialisation des variable avec des valeur bidon. L'important, c'est que ca marche!
    Avatar1.idSelection = "Av1";
    Avatar1.Orientation = 2;
    Avatar1.posX = 3;
    Avatar1.posY = 4;
   
    Avatar2.idSelection = "Av2";
    Avatar2.Orientation = 5;
    Avatar2.posX = 6;
    Avatar2.posY = 7;
   
    //Creation du fichier Map
    fileHandle = CreateFile("C:\\Essai2.dat", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_ALWAYS, 0, 0);
    mapFileHandle = CreateFileMapping(fileHandle , 0, PAGE_READWRITE, 0,0x1E8480, "TEST");
   
    //Création de la vue du fichier.
    mdata = (struct MEMORYDATA*)MapViewOfFile(mapFileHandle, FILE_MAP_WRITE, 0, 0,0);

    //C'est dans ces deux lignes qu'il y a des problemes a l'execution.
    mdata->data[0] = Avatar1;
    mdata->data[1] = Avatar2;
   
    //Fermeture des fichier et libération de la mémoire
    UnmapViewOfFile(mdata);
    CloseHandle(mapFileHandle);
    CloseHandle(fileHandle);

    return 0;
    }

Voyez vous d'ou peux venir l'erreur?

mercredi 8 mars 2006 à 14:28:01 | Re : Structure et FileMapping

BruNews

Administrateur CodeS-SourceS
avec 'string' dans struct, ça copiera quoi dans le fichier ???

ciao...
[ Lien ]
BruNews, MVP VC++
mercredi 8 mars 2006 à 14:49:21 | Re : Structure et FileMapping

Loukhass

Comment ca?

C'est le tableau d'avatar que j'essaye de passer entre les deux programmes

mercredi 8 mars 2006 à 14:53:04 | Re : Structure et FileMapping

BruNews

Administrateur CodeS-SourceS
Pas d'adresses entre 2 processus.

ciao...
[ Lien ]
BruNews, MVP VC++
mercredi 8 mars 2006 à 14:59:25 | Re : Structure et FileMapping

Loukhass

Donc selon toi, il n'y a pas de solution a ce que j'essaye de faire?

mercredi 8 mars 2006 à 15:15:29 | Re : Structure et FileMapping

BruNews

Administrateur CodeS-SourceS
ah si, virer ces 'string' à la c.., mettre "char truc[xxx]" dans la struct et écrire les données par memcpy sur le pointeur de filemapping.

ciao...
[ Lien ]
BruNews, MVP VC++
mercredi 8 mars 2006 à 15:27:23 | Re : Structure et FileMapping

Loukhass

Tu veux dire faire un truc dans le genre:

    typedef struct t_avatar {
        char idSelection[10];        //Id du personnage
        int posX;                //Absisse de la position du personnage
        int posY;                //Ordonnée de la position du personnage
        int Orientation;        //Orientation de la position du personnage
    };
    struct MEMORYDATA
    {
        t_avatar data[MAXMEMORY];
    };

puis dans mon programme, je met ca:
    mdata = (struct MEMORYDATA*)MapViewOfFile(mapFileHandle, FILE_MAP_WRITE, 0, 0,0);
  
    memcpy(mdata->data[0].idSelection,"Av1", sizeof("Av1"));
    mdata->data[0] = Avatar1;

c'est ca?

mercredi 8 mars 2006 à 16:04:37 | Re : Structure et FileMapping

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
LPVOID pmem;
....
pmem = MapViewOfFile(...);
et par exemple:
memcpy(pmem, &Avatar1, sizeof(t_avatar));

ciao...
[ Lien ]
BruNews, MVP VC++
mercredi 8 mars 2006 à 16:15:32 | Re : Structure et FileMapping

Loukhass

Ca marche!

Merci beaucoup!



Cette discussion est classée dans : int, structure, avatar, avatar1, avatar2


Répondre à ce message

Sujets en rapport avec ce message

Tableau de structure [ par tomsawyerbelgique ] Bonjour suriez-vous me dire comment fait-on pour passer un tableau de structure dans une fonction:struct student { char nom[10]; int nbcot pointeur sur une structure [ par xc78370 ] Bonjour, Voila mon probleme. si quelqu'un a une idée, mrci d'avance.j'ai plusieurs structures, du style :---------------------------------------struct tableau dynamique de structure en C ? [ par axl79 ] salutje voudrai faire un tableau dynamique de structures. voici ma structure: struct struct_arete { int sommet1; int sommet2; int quantite;} arete;com passer d'un widget a une autre structure [ par khaledtaib ] bonjourj' ai un petit programme de traitement d'image en language C, que je veux lui creer une interface graphique en GTK+.ce programme doit afficher Problème d'itérateur sur une structure [ par Potchi ] Bonjour, Petit problème de débutant :J'ai une structure style typedef struct Distrib_Annuelle{ int Année ; int Compteur ;} J'ai déclaré une list Ordonnanceur [ par kinligon ] J'essaye de créer un ordonnanceur  en utilisant un protocole client/serveur.Je souhaite utiliser un ordonnencement FCFS.La structure des BCP est la su Allocation tableau dynamique ds structure [ par chental ] Salut à tous,Sauriez vous me dire comment allouer dynamiquement un tableau dans une structure ?J'arrive à faire l'essentiel mais dans la structure je [GCC] structure et makefile [ par badboy38 ] Bonjour,j'ai créé un programme avec une structure qui fonctionne parfaitement tant que le programme est un 1 fichier. Dès que je veux créer un multifi initialisation d'un tableau de structure [ par thmatew ] Bonjour a tous,meme si je ne débute pas en C je pense que ce message doit etre poser ici.je n'arrive pas a initialiser une structure en brut, un Exemp initialisation d'une liste de structure [ par caiman125 ] SOS aide moi.j'utilise comme IDE le wxdevc++ je veut initialise une liste contenant une structure en utilisant la bibliothèque list.hvoila mon code co


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,087 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales