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:
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:
_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!!!