E ovako, treba da napravim Server koji parsuje RSS fajlove i klijentima vraca vesti. Program radim u Turbo Delphi-ju i koristim Indy TCP Server. Problem nastaje kada pokusam da parsujem dovuceni XML fajl preko komponente TXMLDocument. Da pojasnim, problem se iskljucivo javlja u metodi Indy TCP Servera OnExecute. Ovako van te metode, nemam problema, sve radi savrseno. Ali kada pokusam da parsujem u toj metodi javlja gresku: "CoInitialize has not been called". Posto je to Server, sve se radi preko niti, tako da je i taj event vezan za nit konekcije sa klijentom. Kako da ovo resim??? Pomagajte.
Greska: CoInitialize has not been called
Zaključano
Zakačeno
U Execute metod niti stavi ovako.
Razlog za ovako ponasanje je to sto se automatska inicijalizacija COM-a vrsi samo za glavnu nit, dok za ostale koje pravis moras sam to da uradis. A bez inicijalizacije nema ni koriscenja :)
Code:
begin
CoInitialize;
try
// Ovde stavi ono sto si do sada koristio...
finally
CoUnInitialize;
end;
end;
begin
CoInitialize;
try
// Ovde stavi ono sto si do sada koristio...
finally
CoUnInitialize;
end;
end;
Razlog za ovako ponasanje je to sto se automatska inicijalizacija COM-a vrsi samo za glavnu nit, dok za ostale koje pravis moras sam to da uradis. A bez inicijalizacije nema ni koriscenja :)
izmenjeno 1 put, poslednji put FreeInHell 07.12.2006. u 16:12
Izmene poruke
- FreeInHell07.12.2006. u 16:12zapis iz teksta poruke
Hvala, vec sam razmisljao o nekim drugim ekstremnim koracima :-).
To radi samo sto mora:
CoInitialize(nil); i da se doda u uses listu: ActiveX. Hvala jos jednom, pozdrav!
To radi samo sto mora:
CoInitialize(nil); i da se doda u uses listu: ActiveX. Hvala jos jednom, pozdrav!