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++Builder Discussion :

Idée pour enregistrer des données d'un agenda


Sujet :

C++Builder

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut Idée pour enregistrer des données d'un agenda
    Bonjour,

    J'ai fait un genre de calendrier, avec la possibilité de mettre du texte dans les cases correspondantes aux heures.

    Maintenant je voudrais enregistrer toute ces données dans un fichier.
    Ensuite je voudrais pouvoir récupérer de mon fichier, uniquement les textes corresponds au jour sélectionné.

    Je suis donc à la recherche d'une piste. Je n'ai pas d'idée pour faire cela.
    Quelqu'un aurait-il une idée sur la façon de pouvoir enregistrer et récupérer tous ces textes (la longueur peut varier) en fonction des dates, sachant que je peux modifier les textes dans mon agenda ?

    Merci

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Bosoir,

    je pense qu'il te faut utiliser une base de données. c'est plus souple dans ton cas.

    Pour apprendre, fait un tour sur
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  3. #3
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Si tu as un peu d'argent pour la partie calendrier tu peux acheter le composant TPlanner de tmssoftware.com.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  4. #4
    Membre actif Avatar de damienlann
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 293
    Points : 249
    Points
    249
    Par défaut
    Citation Envoyé par Crayon
    Si tu as un peu d'argent pour la partie calendrier tu peux acheter le composant TPlanner de tmssoftware.com.
    ou le faire soit meme... lol
    ou tu fait un dossier par mois... une fois le mois passer tu l'effaces.
    ensuite tu fait un fichier par jour ou il est ecrit quelque chose (pas 30/mois... si une journée est vide, tu ne crée pas de fichier) que tu nommes avec la date en question.
    c'est peut etre mal expliquer et un peu lourd (eventuellement beaucoup de fichiers) mais si tu ne veut pas passer par des bases de données...

    edit:
    un petit dessin vaut mieux qu'un long discours (surtout quand le discours est foireux...)
    Images attachées Images attachées  

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 188
    Points : 143
    Points
    143
    Par défaut
    Pour ma part j'enregistrerais les données dans un fichier xml. Ensuite il faut retrouver le noeud qui correspond au jour qui t'interesse.

    Il y a la bibliothèque Tinyxml qui est pratique et facile à mettre en oeuvre.

  6. #6
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    Tu peux enregistrer tes données soit dans un fichier externe à ton application (xml, txt, ini, ...) soit en interne dans ta ressource.

    Suite à ton idée (sur ton premier post) j'ai développé la même application que toi (calendrier Agenda avec Alarme). Perso, j'ai enregistré toutes mes données dans des structures dans mon soft, et j'ai sauvé ces structures en ressource.

    Avantages:
    +Pas de fichier externe,
    +Possibilité de faire partager son emploie du temps simplement,
    +pas de procédure d'installation.

    Inconvénients:
    -Code compliqué à mettre en oeuvre (la première fois, quand on ne connait pas),
    -Impossible de sauver des AnsiString (chaine de longueur variable par contre tu peux sauver des tableaux de char).

    Pour l'enregistrement dans des fichiers externes tu as d'autres avantages et inconvénients:
    Avantages:
    +Lecture facile,
    +codage simple et exemple facilement trouvable sur le net (cf developpez),
    +possibilité de découpage et structuration simple et efficace.

    suivant les applications avantage ou inconvénient
    +/-modifiable sans forcément le logiciel

    Inconvénients:
    -le chemin du fichier doit rester le même tout le temps,
    -gérer la création/modification du fichier
    -partage des informations difficiles
    -impossibilité (sauf gestion spécifique) de deux fois la même appli sur le même PC (gérer le fichier à modifier)

    Voilà à toi de gérer ta solution en fonction du temps que tu veux y passer et de ce que tu souhaites faire de ton appli.

    Résolu?

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Merci à tous pour vos idées.
    Je vais y réfléchir.

    Merci

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Salut,

    Le fichier xml m'interresserai, mais je ne connais pas le format xml.

    Est ce qu'il est possible de mettre dans des noeuds du texte avec des longueurs variables (par exmple des AnsiString) ?

    Est-il possible aussi de mettre plusieurs noeuds enfants dans un noeud principal ?
    par exemple :
    -Noeud principal
    ->Element 1
    -> Reponse de l'element 1
    ->sous element a de Element 1
    ->Reponse sous element a de Element 1
    ->Element 2
    -> Reponse de l'element 2
    ->Element 3
    ->Reponse de l'element 3
    -> et ainsi de suite

    Merci

  9. #9
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 188
    Points : 143
    Points
    143
    Par défaut
    Le fichier xml m'interresserai, mais je ne connais pas le format xml.
    Le format de base est assez simple. Il y a une rubrique XML sur developpez.com et un tuto d'introduction http://haypo.developpez.com/tutoriel...oduction/#LI.A
    Il y a un tuto sur l'utilisation de la bibliothèque tinyxml ici : http://khayyam.developpez.com/articles/cpp/tinyxml/

    Avec C++ Builder tu peux également utiliser XMLIntf (Faire F1)

    Est ce qu'il est possible de mettre dans des noeuds du texte avec des longueurs variables (par exmple des AnsiString) ?
    Oui, mais il faudra passer par string ou char* avec tinyxml et peut être directement avec XMLIntf

    Est-il possible aussi de mettre plusieurs noeuds enfants dans un noeud principal ?
    Oui.
    Le fichier ressemblera à quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    /*
    <Noeud principal>
       <Element index="1">
          <Reponse>Reponse de l'element 1</Reponse>
          <Element index="a">
             <Reponse>Reponse sous element a de Element 1</Reponse>
          </Element>
       </Element>
       <Element index="2">
          <Reponse>Reponse de l'element 2</Reponse>
       </Element>
       <Element index="3">
          <Reponse>Reponse de l'element 3</Reponse>
       </Element>
    ...
    </Noeud principal>
    */

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Salut Alfred12,

    Tu as écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    /*
    <Noeud principal>
       <Element index="1">
          <Reponse>Reponse de l'element 1</Reponse>
          <Element index="a">
             <Reponse>Reponse sous element a de Element 1</Reponse>
          </Element>
       </Element>
       <Element index="2">
          <Reponse>Reponse de l'element 2</Reponse>
       </Element>
       <Element index="3">
          <Reponse>Reponse de l'element 3</Reponse>
       </Element>
    ...
    </Noeud principal>
    */
    Je ne voudrais pas trop t'embêter, mais pourrais-tu s'il te plait me donner un exemple de code (avec TXMLDocument, car tinyxml j'y arrive pas) avec ton fichier d'exemple ci-dessus, car franchement je ne m'en sors pas.

    Merci d'avance

  11. #11
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 188
    Points : 143
    Points
    143
    Par défaut
    Et voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    void __fastcall TSDIAppForm::Button1Click(TObject *Sender)
    {
       _di_IXMLNode node_elt;
       _di_IXMLNode node_selt;
       _di_IXMLNode node_chd;
       XMLDoc->Active = true;
       XMLDoc->DocumentElement = XMLDoc -> CreateElement("Root","");
       node_elt = XMLDoc->DocumentElement->AddChild("Element",-1);
       node_elt->SetAttributeNS("index","","1");
     
       node_chd = node_elt->AddChild("Reponse",-1);
       node_chd->Text = "Réponse de l'élément 1";
     
       node_chd = node_elt->AddChild("Element");
       node_chd->SetAttributeNS("index","","a");
       node_selt = node_chd->AddChild("Reponse",-1);
       node_selt->Text = "Reponse sous element a de element 1";
     
       node_elt = XMLDoc->DocumentElement->AddChild("Element",-1);
       node_elt->SetAttributeNS("index","","2");
       node_chd = node_elt->AddChild("Reponse",-1);
       node_chd->Text = "Réponse de l'élément 2";
     
       XMLDoc->SaveToFile("monfichier.xml");
    }
    Tu mets un TXMLDocument sur ta fiche et tu l'appelles XMLDoc, le code fonctionne.

    Et le résultat du bout de code est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /*
    <Root>
       <Element index="1">
          <Reponse>Réponse de l'élément 1</Reponse>
          <Element index="a">
             <Reponse>Reponse sous element a de element 1</Reponse>
          </Element>
       </Element>
       <Element index="2">
          <Reponse>Réponse de l'élément 2</Reponse>
       </Element>
    </Root>*/

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Salut,

    Merci pour ton code.
    Encore 1 petite question :
    - Est-il possible d'ajouter, de modifier ou de supprimer des éléments dans un noeud, d'un fichier déjà existant avec TXMLDocument ?

    Merci

  13. #13
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 188
    Points : 143
    Points
    143
    Par défaut
    Tout à fait. La propriété ChildNodes permet d'avoir accès à tous les noeuds d'un noeud. NextSibling() permet de parcourir les noeuds.

    Quand tu ouvre un fichier existant, le noeud racine est accessible par DocumentElement.

    En gros tu peux maintenir ton fichier XML à jour en même temps que les objets dans ton code. Sinon il faut lire le fichier puis le reconstruire lors de l'enregistrement.

  14. #14
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Salut Alfred12,

    Merci beaucoup pour ton aide.

  15. #15
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Salut,

    Désolé de revenir encore avec mon problème de XML, est-ce qu'il y aurait un tut avec TXMLDocument, car je ne m'en sors pas...

    Merci

  16. #16
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 188
    Points : 143
    Points
    143
    Par défaut
    Dans la FAQ Delphi il y une rubrique sur XML, normalement c'est assez compréhensible pour faire du C++ Builder. Cela donne des réponses pour les opérations de base avec un fichier XML.
    http://www.developpez.com/delphi/faq/?page=xml

    Sinon il n'y a pas grand chose à part l'aide.

    Dis nous sur quoi tu bloque.

  17. #17
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Salut,

    Je croyais que c'était plus facile que ça....
    En fait je voudrais pouvoir écrire et lire cet exemple (et en plus je ne sais pas si mon exemple ci-dessous est réalisable sous xml):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    <Root>
    	<Week value="Ici numero de semaine">
    	  <Memo>Ici un texte</Memo>
    	  <Jour date="01/01/2007">
    		<Question1 value="...">
    		<Question2 value="...">
    		<Question3 value="...">
    		<Heure>
    		   	<Heure index="6:00">
    			             <Plan>Ici un texte</plan>
    				<Mod>Ici un texte</Mod>
    				<IsMod value="true">	
    			</Heure>
    			<Heure index="8:00">
    				<Plan>Ici un texte</plan>
    				<Mod>Ici un texte</Mod>
    				<IsMod value="true">	
    			</Heure>
    			<Heure index="11:00">
    				<Plan>Ici un texte</plan>
    				<Mod>Ici un texte</Mod>
    				<IsMod value="true">	
    			</Heure>
    		</Heure>
    	</Jour>
     
    	<Jour date="02/01/2007">
    		<Question1 value="...">
    		<Question2 value="...">
    		<Question3 value="...">
    		<Heure>
    			<Heure index="6:00">
    				<Plan>Ici un texte</plan>
    				<Mod>Ici un texte</Mod>
    				<IsMod value="true">	
    			</Heure>
    			<Heure index="8:00">
    				<Plan>Ici un texte</plan>
    				<Mod>Ici un texte</Mod>
    				<IsMod value="true">	
    			</Heure>
    			<Heure index="11:00">
    				<Plan>Ici un texte</plan>
    				<Mod>Ici un texte</Mod>
    				<IsMod value="true">	
    			</Heure>
    		</Heure>
    	</Jour>
               </Week>
    </Root>
    J'arrive tout juste à écrire le <root>, puis après j'arrive plus.
    Et alors pour lire cet exemple, je suis dans les choux....

    merci.

  18. #18
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut FredericB:
    Je crois que ce cours sur le Site va t'aider.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  19. #19
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Salut Alfred12 et Blondelle,

    Je vais essayer avec la librairie tinyxml...
    J'ai déjà réussi à l'installer, car je n'arrivais pas du tout à la faire fonctionner avant.
    J'avais oublié d'intégrer la lib dans mon projet.

    merci

  20. #20
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Salut,

    Je suis déjà arriver à écrire mon xml. Je suis content...
    Bon maintenant je vais essayer de lire mes noeuds...

    Merci

Discussions similaires

  1. Problème pour enregistrer des données
    Par furax51 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/07/2014, 09h35
  2. Conseils pour enregistrer des données
    Par spookyz dans le forum VB.NET
    Réponses: 4
    Dernier message: 11/10/2010, 17h24
  3. Une idée pour récupérer des données ?
    Par scarlatine dans le forum Services Web
    Réponses: 2
    Dernier message: 26/08/2009, 23h53
  4. utiliser formulaire pour enregistrer des données dans différentes tables
    Par silue fignigue siaka dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 11/04/2009, 13h53
  5. [HTML] Tableau pour l'enregistrement des données
    Par ghyosmik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 01/11/2005, 15h28

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