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 :

Enregistrer les infos d'un StringGrind en format XML


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut Enregistrer les infos d'un StringGrind en format XML
    Rebonjour,

    J'ai besoin d'enregistrer les infos contenues dans un TStringGrid au format XML...

    En fait j'ai déjà une idée du code XML et il faudrait que les données du TStringGrid viennent se mettrent à certains endroits du code ( la forme générale ne change pas entre les enregistrements, je sais pas si je suis clair)...

    J'ai cherché du coté d'un composant appelé TXMLDocument - composant que je n'ai 'ailleurs pas trouvé car pas sur ma version de BCB 6 et je ne suis tombé que sur un lien mort pour le telecharger vieux de 3 ans ( via le site )

    PS: je connais RIEN à XML, ya 10 minutes que je sais que ça existe.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    Si tu as les composants DB (Version Pro), tu pourrais remplacer ton TStringGrid par le couple TDBGrid + TSimpleDataSet (ou TClientDataSet)

    TXMLDocument c'est une encapsultation du IXMLDocument, tu dois pouvoir importer la Bibliothèque MSXML.DLL
    Dans mon Delphi 6 Entreprise, TXMLDocument est dans l'onglet Internet
    D7 Pro, idem, XE idem

    Sinon, si le XML n'est pas obligatoire, tu peux en à peine dix lignes de codes sérializés ton StringGrid via Stream.WriteComponent en format DFM
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    Malheureusement , je ne peux pas remplacer le TStringGrid par TDBGrid + TSimpleDataSet (ou TClientDataSet) car je ne travaille pas avec une base de données... j'affiche les infos de mon TStringGrid à partir d'un fichier .txt...
    On nous a demandé de faire comme ça...

    J'arrive pas non plus à obtenir TXMLDocument, j'ai rien dans l'onglet "Internet" et je vois nul part ou je peux le chopper sur le net.

    Donc je suis embêté car le XML est imposé...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    J'ai trouvé le composant ici en téléchargement sur embarcadero. Je donne le lien si quelqu'un le cherche comme moi plus tard :

    http://cc.embarcadero.com/item/18938

    Des idées/conseils sont toujours les bienvenues

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    Bon je me démerde comme je peux...
    Pour écrire sur le XMLDoc:


    <grammar>
    <lexicon uri="annuaire.lex"/>


    j'utilise ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       _di_IXMLNode node_elt;
       _di_IXMLNode node_selt;
       _di_IXMLNode node_chd;
       XMLDoc->Active = true;
       XMLDoc->DocumentElement = XMLDoc -> CreateElement("grammar","");
       node_elt = XMLDoc->DocumentElement->AddChild("lexicon",-1);
       node_elt->SetAttributeNS("uri","","annuaire.lex");
    Mais j'ai ce résultat: <grammar><lexicon uri="True"/></grammar>

    Je voudrais "annuaire.lex" à la place du TRUE...

    Si quelqu'un voit la faute ...

    sur l'aide BCB de IXMLNode j'ai ceci pour la méthode SetAttributeNS:

    Définit la valeur d'un des attributs de ce noeud lorsque vous devez explicitement spécifier l'espace de nommage de l'attribut.

    void __fastcall SetAttributeNS(const DOMString AttrName, const DOMString NamespaceURI, constOleVariant Value);

    Description

    SetAttributeNS définit la valeur d'un attribut spécifié de ce noeud.

    AttrName est le nom de l'attribut. Si l'attribut existe déjà pour le noeud, sa valeur est modifiée. Si l'attribut n'existe pas déjà, un nouvel attribut est créé.

    NamespaceURI représente l'espace de nommage de l'attribut.

    Value est la valeur à affecter à l'attribut. Cette valeur est une chaîne non analysée. Toute marque (par exemple, pour une référence d'entité) est traitée comme du texte littéral et doit comprendre les séquences d'échappement appropriées. Si Value a pour valeur NULL, l'attribut est supprimé de ce noeud. Si Value est une chaîne vide, une valeur vide est affectée à l'attribut.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    trouvé la problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    node_elt->SetAttribute("uri",(AnsiString)"annuaire.lex");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/05/2008, 15h28
  2. Réponses: 6
    Dernier message: 05/06/2007, 16h42
  3. Réponses: 3
    Dernier message: 13/12/2005, 15h49
  4. Enregistrer les infos login/password sur le client
    Par SheikYerbouti dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/04/2005, 09h29

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