Здравствуйте IT, Вы писали:
IT>Здравствуйте svld, Вы писали:
IT>Вот тебе пример, который выводит две двойки:
IT>IT>#include "stdafx.h"
IT>#include <iostream.h>
IT>#import <msxml3.dll>
IT>void main()
IT>{
IT> ::CoInitialize(NULL);
IT> try {
IT> using namespace MSXML2;
IT> IXMLDOMDocumentPtr doc(__uuidof(DOMDocument));
IT> doc->loadXML(
IT> L"<?xml version=\"1.0\"?>"
IT> L"<root>"
IT> L"<info>TEXT1</info>"
IT> L"<info>TEXT2</info>"
IT> L"</root>"
IT> );
IT>
IT> IXMLDOMElementPtr root = doc->selectSingleNode(L"root");
IT> IXMLDOMNodeListPtr node = root->selectNodes(L"info");
IT> long num = node->Getlength();
IT> cout
IT> << num
IT> << endl
IT> << doc->selectNodes(L"root/info")->Getlength()
IT> << endl;
IT> } catch (_com_error& er) {
IT> cout
IT> << er.ErrorMessage()
IT> << endl;
IT> }
IT> ::CoUninitialize();
IT>}
IT>
Насколько я знаю
L"..." не является полноценным аналогом [b/]BSTR[/b], в частности для функции ::SysStringLen(), так что, использование L"..." в BSTR параметрах, является опастной практикой, так как оно может и не сработать. Другими словами, использование L"..." для BSTR параметров есть предположение о реализации объекта, что, я-б сказал, не правильно.
Или я не прав?
-Zork