Avatar billede driis Nybegynder
06. november 2005 - 18:46 Der er 9 kommentarer og
1 løsning

Windows CE CoCreateInstance

Hej

Jeg ønsker at bruge COM objektet Msxml.DOMDocument i min WinCE applikation skrevet i C++. Ved at læse på MSDN er jeg kommet frem til denne løsning til at initialisere objektet.

    CLSID clsid;
    IXMLDOMDocumentPtr ptrXml = NULL;
    HRESULT hr = CLSIDFromProgID(PROGID_DOMDOCUMENT,&clsid);

   
    if ( hr == S_OK )
    {
        hr = CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(DOMDocument),(void**)&ptrXml);
        if ( hr != S_OK )
            // fejl

    }

Koden fejler i kaldet til CoCreateInstance.

Jeg er nybegynder til COM, og alle forslag modtages gerne. Alternative måder at læse og parse et XML dokument i native kode under Windows CE 4.2, er også meget velkomne.
Avatar billede arne_v Ekspert
06. november 2005 - 18:58 #1
COM er et stort område

MSXML har ry for at være en særdeles god parser, så den var jo oplagt at bruge

Har du installeret og registreret MSXML på din CE ? (måske er den det
default - jeg ved ikke nok om det)

Hvad er hr ?

Der er ikke mange alternativer. Apache Xerces C findes ikke som binaries og
det er ikke til at sige hvor meget arbejde der er med at få den til at bygge
på CE. Expat er porteret til CE ifølge http://www.movsoftware.com/expatxml.htm
Avatar billede driis Nybegynder
06. november 2005 - 19:05 #2
hr er blot returværdien fra CoCreateInstance (og senere CLSIDFromProgID)

MSXML er installeret.

Jeg kigger lige på Expat, men jeg ville helst bruge MSXML; og undgå 3rd party libraries.
Avatar billede arne_v Ekspert
06. november 2005 - 19:13 #3
jeg kan godt se at hr er retur værdien

og du siger at den ikke er er S_OK

men er den REGDB_E_CLASSNOTREG, CLASS_E_NOAGGREGATION eller E_NOINTERFACE ?

(som er de øvrige fejlkoder CoCreateInstance kan returnere ifølge MSDN)
Avatar billede driis Nybegynder
06. november 2005 - 21:15 #4
hr bliver E_NOINTERFACE

Det må, så vidt jeg kan se være 4. parameter den er gal med, __uuidof(DOMDocument).
Længere kan jeg dog ikke komme da jeg ikke synes jeg kan finde et klart svar i MSDN om hvilken IID jeg skal bruge.
Avatar billede arne_v Ekspert
06. november 2005 - 21:28 #5
du har ikke en IID_IXMLDOMDocument konstant ?
Avatar billede arne_v Ekspert
06. november 2005 - 21:29 #6
og ellers skulle det vel under alle omstændigheder være

__uuidof(IXMLDOMDocument)
Avatar billede driis Nybegynder
07. november 2005 - 13:16 #7
Det var IID_IXMLDOMDocument der skulle til.
Smid et svar for point.

I øvrigt, oplever jeg at load metoden hænger hvis xml filen ikke er valid. Ved du, om man kan undgå det ?
Avatar billede arne_v Ekspert
07. november 2005 - 13:20 #8
svar

ingen anelse - skal jeg eksperimentere lidt ?
Avatar billede driis Nybegynder
07. november 2005 - 13:43 #9
Hvis du har tid og lyst er du velkommen til at eksperimentere med det.
Jeg opretter lige et seperat spørgsmål til det.
Avatar billede driis Nybegynder
07. november 2005 - 13:51 #10
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester