begin process at 2012 05 30 18:46:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Transmission de liste avec FileMapping


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

Transmission de liste avec FileMapping

mardi 28 février 2006 à 13:33:21 | Transmission de liste avec FileMapping

Loukhass

Je dois partager une liste d'élément complexe (des structures) avec FileMapping. J'ai trouvé le code suivant dans les codes sources:

http://www.cppfrance.com/code.aspx?ID=10882

Je l'ai modifié de facon a avoir un programme qui ecrit dans le fichier map et un autre qui lit. Ca marche avec des entier et des chaines de caractères. Mais quand j'essaye avec mes listes. Ca ne marche plus.

Quelqu'un sait-il comment on fait pour passer des listes par FileMapping?

Loukhass

mardi 28 février 2006 à 13:40:38 | Re : Transmission de liste avec FileMapping

Loukhass

Je vous met ici le code que j'ai pour le moment:
La structure que j'utilise pour tester:
    typedef struct t_listeInteraction{
        string interaction;
        t_listeInteraction* suivant;
    }listeInteraction;




Le programme d'écriture:
 int main()
 {
    
     HANDLE hFileMap = CreateFileMapping(INVALID_HANDLE_VALUE,0,PAGE_READWRITE,0,0x4000,"filemap");
     listeInteraction* mData = (listeInteraction*)MapViewOfFile(hFileMap,FILE_MAP_ALL_ACCESS,0,0,0);
    
     //Déclaration des variables
     listeInteraction* inter1;
     listeInteraction* inter2;
     listeInteraction* inter3;
     listeInteraction* temp;
    
     inter1 = new listeInteraction;
     inter2 = new listeInteraction;
     inter3 = new listeInteraction;
     temp = new listeInteraction;
    
     //Initialisation des variables
     inter1->interaction = "Essai";
     inter1->suivant = inter2;
    
     inter2->interaction = "CA MARCHE!";
     inter2->suivant = NULL;
    
     mData = inter1;
    
     (*inter3).interaction = "La, ca marche vraiment";
     (*inter3).suivant = NULL;
     while (true)
     {
         char txt[0xFF];
         scanf("%s",&txt);
          
         if (txt == "EXIT")//Soit je quitte
             break;
         else{//Soit jécrit une troisieme valeur
            inter3->suivant = mData;
            mData = inter3;
         }
     }
     UnmapViewOfFile(mData);
     CloseHandle(hFileMap);
 
     return 0;
 }





Le programme de lecture:
 int main()
 {
     HANDLE hFileMap = OpenFileMapping(FILE_MAP_READ,FALSE,"filemap");
     listeInteraction* mData = (listeInteraction*)MapViewOfFile(hFileMap,FILE_MAP_READ,0,0,0);
    
     //Déclation de variables
     listeInteraction* temp;
 
     temp = new listeInteraction;
 
 
     while (true)
     {
         char txt[0xFF];
         scanf("%s",&txt);
 
         if (strcmp(txt,"PRINT") == 0) {// Affichage de la variable partagée
            temp = mData;
            while(temp!=NULL){//Je parcours la liste
                cout << temp->interaction << endl;
                temp = temp->suivant;
            }    
         }
         else if(strcmp(txt,"EXIT") == 0) // Je quitte la boucle
             break;
     }
     UnmapViewOfFile(mData);
     CloseHandle(hFileMap);
 
     return 0;
 }

mardi 28 février 2006 à 14:33:31 | Re : Transmission de liste avec FileMapping

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
On ne transmet que des données entre processus mais surtout pas d'adresses (pointeurs) car invalides d'un espace de memoire virtuelle vers un autre.

ciao...
[ Lien ]
BruNews, MVP VC++
mardi 28 février 2006 à 15:16:33 | Re : Transmission de liste avec FileMapping

Loukhass

mouais... Je me doutais bien que ca serai un truc dans le genre...

Merci bien pour la réponse!



Cette discussion est classée dans : code, liste, marche, transmission, filemapping


Répondre à ce message

Sujets en rapport avec ce message

pb de polygones et autres [ par dbtm ] Salut payen, et les autres..?J'ai d'autres bugs, en plus de l'affichage de mes polygones.L'executable créé marche sous vc mais bugge quand je le lance Mon code ne marche pô ! [ par xavier59 ] Mon code ne marche pas !Merci de m'aider !!!**************************************************# include # include int main(){ int tab[5]; int i; int t Programme Crasher [ par Kephren ] Salut, je viens demander de l'aide à propos de mon programme. En fait il marche très bien mais depuis que j'ai rajoutée du code, une fois compilé, je Trier un set, ca marche pas!!! besoin d'aide svp... [ par jamirc ] j'ai un set de pointeur Etudiant,je veux en faire le tri par le type du programme et ca marche pas.Voici les attributs dans mon Etudiant.hprotected: rand() ca marche pas!!! [ par Arnaud16022 ] hello je voudrais savoir pourquoi ce prog donne toujours la meme liste de resultats:#include #include int main(){ for (int a=0;a!=10;a++){ Focus Visual C++ 6.0 [ par Steph115 ] Salut a tous,J'aimerais savoir si qqun sait comment faire pour obtenir le focus j'ai un HWND console; ou console represente ma fenetre et je lui fait [C++.NET]Accès à un élément d'un formulaire [ par tidou ] HelloJ'ai un problème :cry: J'ai un formulaire nommé disons "X" avec une liste déroulante.J'ai un autre formulaire disons "Y" avec une zone de texte Une Liste en STL dans une Application en MFC [ par EMSIEN ] Salut à Vous Toutes et à Vous Tous,Je Travaille un algo sur les Polygones en MFC,je veux quand on clique sur la forme récupérer les Coordonnées du poi pb affichage icone-bouton (pk sa marche pas ??) [ par Gendal67 ] Bonjour all! :)Me revoila....avec un autre souci....j'essaie en vain d'afficher une icone sur un bouton...je pense connaitre tout le necessaire pour f Structures nommées incompréhensible ... à l'aide [ par otterc8 ] Bonjour, voila j'ai ce bout de code que je ne comprends pas top, malgré des recherches sur les structures, il y a des choses que je ne comprends pas!


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 2,293 sec (3)

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