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

C Discussion :

gestion de handle, void*


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 56
    Points
    56
    Par défaut gestion de handle, void*
    Bonjour,

    j'aimerais ecrire un systeme de database qui me permette de stocker un nombre fini (statique) de structure.
    Je dois faire des fonctions pour gerer cette DB avec les signatures suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    typedef void* Handle_t
     
    int Add(struct myStruct* pINStruct, Handle_t* handle); // add a struct
    int getStructFromHandle (Handle_t handle, struct myStruct* pOUTStruct);
    int Delete(Handle_t bsHandle);
    int hndDeleteAll ();
    Par contre je ne vois pas comment structurer mon prog et comment gérer les handles en intern.
    En gros l'idée c'est de pouvoir ajouter/supprimer/retrouver des structures a partir de handle mais je ne maitrise pas le sujet.

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    C'est à toi de savoir comment tu veux organiser ta base de données. On a bien du te donner des pistes car tel que tu le dis, c'est un peu vague.
    Tu a un seul fichier ?
    Tes données sont toutes du même type ?
    On a quand même besoin d'un peu plus d'explications !
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par Trap D
    C'est à toi de savoir comment tu veux organiser ta base de données. On a bien du te donner des pistes car tel que tu le dis, c'est un peu vague.
    Tu a un seul fichier ?
    Tes données sont toutes du même type ?
    On a quand même besoin d'un peu plus d'explications !
    En gros je recois une structure que je dois stocker quelque part (dans une classe en fait car je bosse dans un environnent moitié C/C++. J'ai des fonctions C qui decrivent une interface et à moins de me debrouiller en interne pour stocker ca.
    Donc si on me donne une structure je la stocke et je renvoie un handle associé. Ensuite si l'utilisateur le veut il peut supprimer la structure précedemment remplie en donnant le handle...
    Je sais que c'est pas clair mais c'est parce que ca ne l'est pas pour moi non plus d'ou la difficulté.

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Donc tu peux sauvegarder cette donnée dans un fichier ou dans un tableau ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par Trap D
    Donc tu peux sauvegarder cette donnée dans un fichier ou dans un tableau ?
    Dans un tableau, bon apres reflexion j'ai une piste.
    J'ai un tableau de structure qui a la fome suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct 
    {
     struct myStruct* pMyStruct;
    bool bIsFree;
    } handleWrapper
    Ensuite j'alloue mon tableau de struct

    handleWrapper myDb[255];
    les adresses memoires sont données au hasard mais c juste pour dire qu'elles sont allouées au demarrage de mon prog et quelles ne changent pas pendant toute l'execution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    myDb[0] = 0x3e5446546
    myDb[1] = 0x3e5446585
    ...
    myDb[254] = 0x3e554655
    Quand je recois par l'intermediaire de ma fonction Add une structure je parcours mon tableau de struct pour trouver un champ bIsFree a true.
    Dans ce cas je copie la structure donnée la puis je passe mon bIsFree a false et enfin je renvoie l'addresse de l'index de mon tableau que je caste en void*.
    Par exemple lors du tout premier add je vais renvoyer (void*)myDb[0]

    Ca me parait pas mal comme truc

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    On doit pouvoir faire comme ça.
    Ceci me gêne un peu
    handleWrapper myDb[255];
    les adresses memoires sont données au hasard mais c juste pour dire qu'elles sont allouées au demarrage de mon prog et quelles ne changent pas pendant toute l'execution
    Ces adresses sont des zones mémoires pouvant accueillir les structures en entier et non un simple pointeur, je me trompe ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par Trap D
    On doit pouvoir faire comme ça.
    Ceci me gêne un peu
    handleWrapper myDb[255];
    les adresses memoires sont données au hasard mais c juste pour dire qu'elles sont allouées au demarrage de mon prog et quelles ne changent pas pendant toute l'execution
    Ces adresses sont des zones mémoires pouvant accueillir les structures en entier et non un simple pointeur, je me trompe ?
    Ca doit etre ca.

  8. #8
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par romeo9423
    Ca doit etre ca.
    Tu m'inquiètes !
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: gestion de handle, void*
    Citation Envoyé par romeo9423
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef void* Handle_t
    Déjà, tu pars mal. Tu devrais lire ça

    http://emmanuel-delahaye.developpez.com/tad.htm

    pour appendre à utiliser les structures anonymes correctement.
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. [Système/Fichiers/API] Shellexecuteex multiple et gestions du/des handle(s)à
    Par Godzestla dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/05/2012, 10h18
  2. Problème gestion des handles axes
    Par sjunod dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 13/07/2010, 13h42
  3. Gestion des handles
    Par ontheroadagain dans le forum Interfaces Graphiques
    Réponses: 10
    Dernier message: 11/06/2009, 14h34
  4. Gestion du Handles
    Par Pako007 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 17/09/2007, 20h56
  5. Gestion de handle
    Par frizou11 dans le forum Windows
    Réponses: 1
    Dernier message: 01/06/2007, 16h40

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