大哥大姐们帮小弟看看这个函数,在EXE Project 工程中可以解析XML文件,
但到了DLL Project 工程中就报错,提示:微软MSXML未安装.函数如下:
Function ParseXML(FileName:string;var Skey, return_code,return_msg:string):boolean;
var
  InXMLDoc: TXMLDocument;
  Root : IXMLNode; //指向XML根结点
  Parent_Node: IXMLNode; //指向第一层子结点
begin
  InXMLDoc  := TXMLDocument.Create(application);
  Try
    InXMLDoc.LoadFromFile(FileName);
    Root := InXMLDoc.DocumentElement; //取XML文件的根结点,即“TX”
    Parent_Node := Root.ChildNodes.First; //使Parent_Node指向Templates 结点
    while (Parent_Node <> nil) do //循环取多个Templates
    begin
      if Parent_Node.NodeName = 'SKEY' then Skey:=Parent_Node.text;
      if Parent_Node.NodeName ='RETURN_CODE' then return_code :=Parent_Node.Text;
      if Parent_Node.NodeName ='RETURN_MSG' then return_msg :=Parent_Node.Text;
      Parent_Node := Parent_Node.NextSibling; //顺序取下一个节点信息
    end;
  Finally
    InXMLDoc.Free;
  end;
end;请帮我看看,很急!!!

解决方案 »

  1.   

    使用activex的工程,其实都要做com的初始化,但delphi似乎有这样一个问题,它的com初始化时会判断当前是否为exe还是dll,如果是exe就初始化,否则就不,结果就导致在dll中使用activex就不行了。在《delphi葵花宝典》中提到过这个问题,具体如何修正我忘记了,呵呵
      

  2.   

    那不是什么问题,仅是使用COM的一个基础概念:Apartment就是使用COM的时候需要调用Coinitlize。。(ACTIVEX单元)
    把它加上就行了。DELPHI生成的APPLICATION,会缺省在主线程调用Coinitlize。。