Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi MSXML im Dienst (https://www.delphipraxis.net/134973-msxml-im-dienst.html)

Mr_G 2. Jun 2009 13:52


MSXML im Dienst
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich habe (wie schon in einem Thread von im erwähnt) das Problem, das nach beenden meines Dienstes ein "Problembericht senden"-Fenster auftaucht. Ich habe MSXML als übeltäter entlarvt, weiß aber nicht warum es da nun Probleme gibt. Hier mal der Code:
Delphi-Quellcode:
CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
XMLSchedule := CoDOMDocument40.Create;
XMLSchedule.setProperty('NewParser', true);
if not XMLSchedule.load(FILE_SCHEDULE) then
  XMLSchedule.loadXML('<?xml version="1.0" ?><timetable version="0.2" />');

if XMLSchedule.parseError.errorCode <> 0 then
  ExecError := $3E80
else if XMLSchedule.documentElement.nodeName <> 'timetable' then
  ExecError := $3E81
else
  begin
    ScheduleVersion := XMLSchedule.documentElement.attributes.
      getNamedItem('version').text;
    if ScheduleVersion > '0.2' then
      ExecError := $3E82;
  end;
Dieser Code wird beim Initialisieren des Dienstes ohne Fehler ausgeführt. Beim Beenden wird dann noch CoUninitialize aufgerufen. Ich habe sämtliche Bearbeitung (die problemlos funktioniert) testweise auskommentiert um Fehler dort auszuschließen.
Woran könnte das liegen (evtl. etwas in Bezug auf COM)?

himitsu 2. Jun 2009 14:05

Re: MSXML im Dienst
 
Hast du es mal ohne CoUninitialize versucht?
Vielleicht ist seitens MSXML nocht nicht alles aufgeräumt wurden.

Ansonsten MSXML einfach nicht nutzen. :angel2:

Mr_G 2. Jun 2009 14:53

Re: MSXML im Dienst
 
Hab ich versucht... leider ohne Wirkung :(
MSXML nicht zu nutzen ist leider keine Option...

mjustin 2. Jun 2009 17:26

Re: MSXML im Dienst
 
Zitat:

Zitat von Mr_G
Ich habe MSXML als übeltäter entlarvt, weiß aber nicht warum es da nun Probleme gibt.

Werden Variablen als TXMLDocument deklariert? Das ist eine häufige Fehlerursache.
Es sollte stattdessen immer das Interface IXMLDocument als Typ verwendet werden.

Mr_G 3. Jun 2009 08:58

Re: MSXML im Dienst
 
Das ist leider nicht das Problem. Die Variable ist als IXMLDOMDocument2 deklariert.

Angel4585 3. Jun 2009 09:14

Re: MSXML im Dienst
 
Hast du mal andere Parameter beim CoInitializeEx versucht?

Mr_G 3. Jun 2009 09:44

Re: MSXML im Dienst
 
Ich habe mal COINIT_MULTITHREADED ausprobiert aber auch das hat nicht geholfen.

himitsu 3. Jun 2009 09:52

Re: MSXML im Dienst
 
jupp, also auch mal COINIT_MULTITHREADED oder einfach nur CoInitialize(nil) ?

Mr_G 3. Jun 2009 10:14

Re: MSXML im Dienst
 
:pale: Auch das bringt nicht den gewünschten Erfolg... Aber beim testen ist mir aufgefallen, dass ich scheinbar nur zu hektisch bin: Ich habe den Dienst jeweils gestartet und dann direkt gestoppt. Wenn ich ein bisschen Zeit vergehen lasse beendet sich der Dienst korrekt. Außerdem musste ich noch das CoUninitialize herausnehmen, da sich der Dienst mit CoUninitialize beim Beenden immer verschluckt. :shock:
Was mach ich denn nun?

Angel4585 3. Jun 2009 10:23

Re: MSXML im Dienst
 
Hats du vor dem CoUninitialize das XML-Objekt freigegeben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz