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 :

Violation d'acc�s lors utilisation TXMLDocument dynamiquement


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre extr�mement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par d�faut Violation d'acc�s lors utilisation TXMLDocument dynamiquement
    Bonjour,

    Dans le besoin d'un traitement multithread utilisant XML, je ne peux pas utiliser le composant TXMLDocument en glissant seulement de la palette Internet ce composant; je dois avoir un TXMLDocument pour chaque thread
    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
    void __fastcall TMyThread::Treatment()
    {
    TXMLDocument* pXmlDoc = new TXMLDocument("");
    pXmlDoc->DOMVendor = GetDOMVendor("MSXML");
    pXmlDoc->Active = true;
    AnsiString str = "<MainForm><Height>480</Height><!--Salut--><Width>696</Width><Top>107</Top><Left>233</Left><Panel1><Caption>Panel1</Caption><Color>clBtnFace</Color><Boolean>0</Boolean><Strings>Rijaniaina</Strings></Panel1></MainForm>";
    pXmlDoc->LoadFromXML(str);
    _di_IXMLNodeList xmlRootNode = pXmlDoc->DocumentElement->ChildNodes;//surely MainForm
    MainForm->Height =  StrToInt(xmlRootNode->Nodes[WideString("Height")]->Text);
    MainForm->Width = StrToInt(xmlRootNode->Nodes[WideString("Width")]->Text);
    MainForm->Top =  StrToInt(xmlRootNode->Nodes[WideString("Top")]->Text);
    MainForm->Left = StrToInt(xmlRootNode->Nodes[WideString("Left")]->Text);
    _di_IXMLNodeList xmlPanelNode = xmlRootNode->Nodes[WideString("Panel1")]->ChildNodes;
    Panel1->Caption = xmlPanelNode->Nodes[WideString("Caption")]->Text;
    Panel1->Color = StringToColor(xmlPanelNode->Nodes[WideString("Color")]->Text);
    CheckBox1->Checked = StrToBool(xmlPanelNode->Nodes[WideString("Boolean")]->Text);
    Memo1->Lines->CommaText = xmlPanelNode->Nodes[WideString("Strings")]->Text;
    }
    J'ai une exception de violation d'acc�s � l'adresse 0x00000000 � la ligne
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    _di_IXMLNodeList xmlRootNode = pXmlDoc->DocumentElement->ChildNodes;//surely MainForm
    , il semble que ->DocumentElement est NULL. Pourquoi? Qu'est-ce qu'il y a d'erron� dans ce code, �a me semble complet pour invoquer dynamiquement un XMLDocument!!!
    randriano.dvp.com
    D�veloppeur. Product Owner [Agile]. Sites web, mobile apps, syst�me d'information (SI).

  2. #2
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Bonjour,

    A tout hasard, ca n'a rien a voir avec ce qui est dis: la dedans ?

    ++

  3. #3
    Membre extr�mement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par d�faut
    En effet, si j'utilise dans tous mes Execute() le XMLDocument que j'ai dragg� sur ma fiche, il y aura les probl�mes de synchronisation comme INTERBLOCAGE et FAMINE !!! Et m�me si je g�re la synchronisation, ce sera plus lent que d'invoquer dynamiquement TXMLDocument !
    J'ai par exemple le cas o� il y avait erreur dans la cha�ne XML utilis�, le programme plante carr�ment � toute utilisation du composant XML sur la fiche, c'est l� la n�cessit� d'utilisation dynamiquement et le delete-er � la fin de Execute()!

    En effet Sunchaser, c'est tout � fait le m�me probl�me que moi, j'ai du faire une recherche avant de poser ma question
    randriano.dvp.com
    D�veloppeur. Product Owner [Agile]. Sites web, mobile apps, syst�me d'information (SI).

  4. #4
    Membre extr�mement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par d�faut
    Voici donc le code r�sultant
    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
    void __fastcall TMyThread::Treatment()
    {
    _di_IXMLDocument d;
     
    TXMLDocument* pXmlDoc = new TXMLDocument("");
    pXmlDoc->DOMVendor = GetDOMVendor("MSXML");
     
    pXmlDoc->GetInterface(d);
     
    pXmlDoc->Active = true;
    AnsiString str = "<MainForm><Height>480</Height><!--Salut--><Width>696</Width><Top>107</Top><Left>233</Left><Panel1><Caption>Panel1</Caption><Color>clBtnFace</Color><Boolean>0</Boolean><Strings>Rijaniaina</Strings></Panel1></MainForm>";
    pXmlDoc->LoadFromXML(str);
    _di_IXMLNodeList xmlRootNode = pXmlDoc->DocumentElement->ChildNodes;//surely MainForm
    MainForm->Height =  StrToInt(xmlRootNode->Nodes[WideString("Height")]->Text);
    MainForm->Width = StrToInt(xmlRootNode->Nodes[WideString("Width")]->Text);
    MainForm->Top =  StrToInt(xmlRootNode->Nodes[WideString("Top")]->Text);
    MainForm->Left = StrToInt(xmlRootNode->Nodes[WideString("Left")]->Text);
    _di_IXMLNodeList xmlPanelNode = xmlRootNode->Nodes[WideString("Panel1")]->ChildNodes;
    Panel1->Caption = xmlPanelNode->Nodes[WideString("Caption")]->Text;
    Panel1->Color = StringToColor(xmlPanelNode->Nodes[WideString("Color")]->Text);
    CheckBox1->Checked = StrToBool(xmlPanelNode->Nodes[WideString("Boolean")]->Text);
    Memo1->Lines->CommaText = xmlPanelNode->Nodes[WideString("Strings")]->Text;
    delete pXmlDoc;
    }
    L'exception que j'obtiens maintenant c'est � la fin de cette fonction: une violation d'acc�s lors du delete!!! Peut-�tre que C++ Builder le fait automatiquement ou quoi ?

    Ma derni�re question est donc: puisque MSXML, il faut l'installer donc mon application ne sera pas portable??
    randriano.dvp.com
    D�veloppeur. Product Owner [Agile]. Sites web, mobile apps, syst�me d'information (SI).

  5. #5
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Post ajout� avant le Rollback

    Citation Envoy� par copeau31
    Up.. j'ai le m�me probl�me que randriano, avec une violation d'acces lors du delete d'un TXMLDocument qui a fait un GetInterface...

    Tu as trouv�, randriano ?

Discussions similaires

  1. BCB 6 / Violation d'acc�s apr�s utilisation d'une DLL
    Par a_lincoln54 dans le forum C++Builder
    R�ponses: 1
    Dernier message: 28/04/2008, 14h15
  2. [ADO] Violation d'acc�s en utilisant EditConnectionString
    Par Kephuro dans le forum Bases de donn�es
    R�ponses: 7
    Dernier message: 02/04/2008, 16h22
  3. Violation d'acc�s lors de la lecture
    Par Fullmetal82 dans le forum C++
    R�ponses: 9
    Dernier message: 29/11/2007, 17h13
  4. Violation d'acces lors d'une destruction d'un composant
    Par Rayek dans le forum Composants VCL
    R�ponses: 15
    Dernier message: 23/11/2005, 11h37
  5. Violation d'acc�s sur un TXMLDocument
    Par WebPac dans le forum Composants VCL
    R�ponses: 14
    Dernier message: 15/03/2005, 15h10

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