Dynamiczny TXMLDocument i CoInitialize :/

0

Mam klasę, a w niej właściwość XMLParser: IXMLDocument. Wywołuję metodę tej klasy load(), w której jest taka linijka

XMLParser := LoadXMLDocument('E:\Marcin\example01.xml');

. Oczywiście klasa wcześniej stworzona, odpowiednie moduły w unice klasy wpisane, wszystko cacy.

I dostaję przy wywołaniu tej metody wyjątek EOleSysError z komunikatem "Funkcja CoInitialize nie została wywołana". I za cholerę nie mogę dojść dlaczego, bo teoretycznie jest wszystko jak być powinno...

Jeszcze jeden szczegół - aplikacja jest konsolowa. Gdy to samo, co nie działa w konsolówce podpiąłem pod buttona w "normalnym" programie wszystko jest niestety OK :/

0

a czy cmd ma mozliwośc korzystania z xml i całej gamy obiektowej??

0

To wywołaj sobie CoInitialize(). W aplikacji okienkowej wykonuje to bodajże metoda TApplication.Initialize().

0

No i się niby udało. Po dodaniu modułu Forms i Application.Initialize na początek wszystko jest już dobrze. Nawet nie ma żadnego Access Violation, znaczy że dobrze wszystko napisałem. Dzięki wam.

Choć myślałem, że Application.Initialize nie zadziała, bo wygląda tak:

procedure TApplication.Initialize;
begin
  if InitProc <> nil then TProcedure(InitProc);
end;

[added]
Jak ja modyfikowałem tego posta to thenkless odpowiedział. Tobie też dziękuję, to CoInitialize w końcu znalazłem sam w ActiveX ;) Zobaczę co jest mniej pamięciożerne i to zastosuję :)

0

Nie musisz dodawać forms. Starczy, że dasz gdzieś na początku Coinitialize(nil) i chyba ActiveX do uses :).

0

Na pewno mniej pamięciożerne jest samo ActiveX i CoInitialize() niż Forms i ActiveX i TApplication.Initialize() :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1