Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Einladen eines XML-Dokumentes über eine DLL (https://www.delphipraxis.net/21388-einladen-eines-xml-dokumentes-ueber-eine-dll.html)

chris01 2. Mai 2004 00:00


Einladen eines XML-Dokumentes über eine DLL
 
Hi Leute,

wie der Titel des Themas schon verrät, möchte ich gerne über eine DLL ein XML-Dokument auslesen und ausgeben.

Doch wenn ich das Xml-Dokument erstellen möchte, nach diesem Code hier:

Delphi-Quellcode:
XMLDocument:=TXMLDocument.Create(nil);
kommt leider immer eine Fehlermeldung mit:
CoIntialize wurde nicht aufgerufen.

Ich habe auch schon aus probiert, es ohne DLL zu machen, also alles im Hauptcode und es klappt super :(

Die Units: XMLIntf, XMLDoc.

Gruß
Christopher

MathiasSimmack 2. Mai 2004 07:39

Re: Einladen eines XML-Dokumentes über eine DLL
 
Ohne dich kritisieren zu wollen, aber die Lösung hast du doch schon selbst genannt:
Zitat:

Zitat von chris01
kommt leider immer eine Fehlermeldung mit:
CoIntialize wurde nicht aufgerufen.

Soll heißen: Du musst "CoInitialize" und "CoUninitialize" (ActiveX-Unit) aufrufen. Ich habe das vor kurzem auch hier schon mal erklärt.

chris01 2. Mai 2004 11:27

Re: Einladen eines XML-Dokumentes über eine DLL
 
Danke! Das funktioniert jetzt, doch kommt immer noch ein Fehler, wenn ich die Dll laden möchte. Eine Exception vom Typ EPrivilege.

Hier ist der Quelltext der Funktion:
Delphi-Quellcode:
function ExtractXML : string; export;
var i:integer;
    hilfe:IXMLNodeList;
    hilfen:IXMLNode;

begin
    CoInitialize(nil);

    XMLDocument := TXMLDocument.Create(nil);

    try

    if not FileExists(XMLFileName) then
    begin
      Beep;
      MessageDlg(rsNoXML, mtError, [mbOk], 0);
      Exit;
    end;

    XMLDocument.LoadFromFile(XMLFileName);
    hilfe := XMLDocument.DocumentElement.ChildNodes;

    for i:=0 to Hilfe.Count-1 do
    begin
       Hilfen := Hilfe.Nodes[i];
       ShowMessage(Hilfen.ChildValues['id'] +' | '+Hilfen.ChildValues['func']);
    end;

  finally
     XMLDocument.Free;
  end;
  CoUninitialize;
end;
Vielleicht kann mir einer Sagen, woran es liegt :)

Gruß
Christopher

P.S. Wie auch schoon oben gesagt, der Fehler kommt nur, wenn ich die Funktion in eine Dll tue und ausführen möchte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:31 Uhr.

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