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

Langage Delphi Discussion :

recuperer données formulaire


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 69
    Points : 46
    Points
    46
    Par défaut recuperer données formulaire
    Bonjour,
    Je voudrais savoir comment peut-on récupérer des données d'un formulaire au format xml?

    Voici un exemple de formulaire:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form>
             <var name="isOk"/>
             <var name="failureReason"/>
             <block>
                     <assign name="isOk" expr="'true'"/>
                     <assign name="failureReason" expr="''"/>
                     <return namelist="isOk failureReason"/>
             </block>
    </form>

    Comment récupérer donc la valeur du champ 'expr'?
    Merci

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    J'ai essayé la fonction utilisé sur le tutoriel, il ne se passe rien. La fonction ne retourne rien donc pas d'affichage de la messagebox.

  4. #4
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Citation Envoyé par beni34 Voir le message
    J'ai essayé la fonction utilisé sur le tutoriel, il ne se passe rien. La fonction ne retourne rien donc pas d'affichage de la messagebox.
    salut,

    y'a t-il une erreur ?
    utilise le pas à pas pour savoir ce qui se passe à l'intérieur de la fonction.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    Lorsque je rentre dans la fonction getNode et que la comparaison s'effectue entre ces deux parametres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if UpperCase(XMLNode.AttributeNodes.Nodes[I].NodeName) = Uppercase(NodeName) then
    La valeur du premier parametre est : 'violation d'accès pour 004156DD accédant à 00000000'.

  6. #6
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    re,

    le "I" est-il initialisé ? n'est-il pas en dehors des limites ? affiches-en la valeur du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XMLNode.AttributeNodes.Nodes[I].NodeName
    pour savoir s'il est bien renseigné ou pas.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    En faite il est bien renseigné mais c'est bien le XMLNode.AttributeNodes.Nodes[I].NodeName qui est bien en dehors des limites quelque soit la valeur de I.
    Une solution?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    Le probleme vient en faite du code xml, les methodes qui m'ont été fournit permettent de recuperer les valeurs de variables situé entre les balises:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xmlData>	
    	<isOk>false</isOk>
    	<failureReason>test</failureReason>
    </xmlData>
    Or mon fichier xml est codé sous forme de formulaire a l'aide de balise <var>, celle-ci défini une variable par son nom (grâce à l'attribut name) et sa valeur (grâce à l'attribut value) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xmlData>
    	<var name="isOk" value="false"/>
    	<var name="failureReason" value="test"/>
    </xmlData>
    Ainsi comment peut on récuperer les données de mon fichier xml?

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 738
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 738
    Points : 13 278
    Points
    13 278
    Par défaut
    Dans un cas, c'est ChildNodes[x].Text et dans l'autre ChildNodes[x].Attributes[y]. (y peut être remplacé par le nom de l'attribut)

    Où est défini XMLNode ? Comment est faite ta boucle ?
    Montre-nous ta routine de lecture complète !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    J'utilise le code fourni par le lien de philnext :
    http://delphi.developpez.com/faq/?pa...rernoeudparnom

  11. #11
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 738
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 738
    Points : 13 278
    Points
    13 278
    Par défaut
    Dans ton cas, plutôt quelque chose comme ceci:

    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
    function GetXMLValue(aParentNode :IXMLNode; aNodeName, aAttrName :string; aDefault :variant) :variant;
    var
      i    :integer;
      Node :IXMLNode;
     
    begin
      for i := 0 to aParentNode.ChildNodes.Count -1 do
      begin
        Node := aParentNode.ChildNodes[i];
     
        if AnsiSameText(Node.NodeName, aNodeName)           and
           AnsiSameText(Node.Attributes['name'], aAttrName) then
        begin
          Result := Node.Attributes['value'];
          Exit;
        end;
      end;
     
      Result := aDefault;
    end;
     
    procedure TForm7.Button1Click(Sender: TObject);
    begin
     MaVar := GetXMLValue(Doc.DocumentElement, 'var', 'failureReason', 'Mon texte');
    end;

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    Merci a tous mais j'ai trouvé une solution a mon problème a l'aide d'une petite boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    With XMLDocument1.ChildNodes.Nodes['xmlData'].ChildNodes do
    begin
          nom :=  Nodes['var'].GetAttributeNS('name', '');
          valeur :=  Nodes['var'].GetAttributeNS('value', '');
          Memo1.Text := Memo1.Text+ 'nom = '+nom+'  valeur = '+valeur+#13#10;
    end;
    Merci Andnotor ta fonction fonctionne trés bien aussi!

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

Discussions similaires

  1. [SimpleXML] Récupération données formulaire dans un xml
    Par mathier dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 20/03/2014, 18h33
  2. Réponses: 13
    Dernier message: 23/02/2010, 20h34
  3. Recuperation données formulaire
    Par Adriano1664 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/06/2008, 11h40
  4. Recuperer donnée formulaire par email
    Par DjChat dans le forum Langage
    Réponses: 5
    Dernier message: 17/04/2008, 19h19
  5. Recuperation de donne formulaire
    Par nestam dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/02/2006, 20h46

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