2008-12-08 10 views
1

Est-ce que je peux créer et détruire un TXMLDocument par moi-même dans Borland C++ Builder? J'ai essayé, mais Borland me répète que TXMLDocument est (et doit être) un composant géré par IDE. La seule raison pour laquelle je veux faire cela est que TXMLDocument sorte de plantage: je reçois le TXMLDocument et 'Obtient' un classeur à partir de celui-ci, définit certaines propriétés du document (le xml est sauvegardé comme un fichier Excel plus tard), et j'ajoute quelques styles. Ok, puis j'ajoute une feuille de calcul et ensuite toutes les cellules que je veux avec un formatage correct, puis je l'enregistre. À ce stade, tout est OK. Puis je veux sauvegarder un autre fichier Excel. Ensuite, je veux enregistrer un autre fichier Excel. Puisque l'EDI ne me laisse pas supprimer et recréer le TXMLDocument, j'essaye de supprimer juste la feuille de travail. Lorsque je tente ce (en mode débogage) l'IDE va ​​dans le mode de pas en ligne dans l'onglet CPU (montrant l'assembleur):nouveau TXMLDocument dans Borland C++ Builder

ntdll.DbgBreakPoint: 
77A07DFE CC    int 3 
77A07DFF C3    ret 

Répondre

2

Vous devez faire quelque chose comme ceci:

_di_IXMLDocument Doc = NewXMLDocument(); 

Je ne peux pas me rappeler les détails sanglants de pourquoi, mais cela devrait vous diriger dans la bonne direction.

Il y a plus d'informations sur le site Web Codegear here.

+0

Oookay ... Pas tout à fait sûr de ce que je ferais avec un _di_IXMLDocument ... Il semble y avoir un tout autre type d'objet de TXMLDocument? – c0m4

+0

C'est un type d'interface. Et comme le dit l'article, la classe se comporte comme une interface comptée par référence lorsque vous spécifiez un propriétaire null pour le composant TXMLDocument. –

0

Essayez ceci:

#include <oxmldom.hpp> 
#include <XMLDoc.hpp> 
#include <xmldom.hpp> 
#include <XMLIntf.hpp> 


    try 
    { 
    CoInitialize(0); 
    _di_IXMLDocument xmlDoc; 
    xmlDoc = LoadXMLData(s1); 
    s1 = xmlDoc->XML->Text; 
    CoUninitialize(); 
    mylog(Fun + String::Format("ANSW-MSG-XML %s ", ARRAYOFCONST((s1)))); 
    } 
    catch (Exception & ex) 
    { 
    mylog(Fun + String::Format("PARSEXML:ERRORE %s \nmsg:%s", 
     ARRAYOFCONST((ex.Message, cmdMsg)))); 
    } 
Questions connexes