回 帖 发 新 帖 刷新版面

主题:回调函数的问题,请大家帮帮 忙

是我主程序中的代码,其中Set_GetXML是我自己编写的DLL方法,用来设置回调函数
procedure TMainForm.FormCreate(Sender: TObject);
begin
 Set_GetXML(@GetXMLPackage);
end;

procedure GetXML(PeerIP,PeerPort,sData :string); stdcall;
begin
 MainForm.Analyse_XML(PeerIP,PeerPort,sData );
end;

procedure TMainForm.Analyse_XML(PeerIP, PeerPort, sData: string);
var
  xmlDoc:IXMLDocument;
  ParentNode:IXMLNode;
begin
  xmlDoc:=NewXMLDocument;
  xmlDoc.XML.Text:=sData;
  xmlDoc.Active:=true;
  ParentNode:=xmlDoc.ChildNodes[1];
  if (ParentNode.NodeName='Message')then
  begin
     if ParentNode.Attributes['Type']='Login' then
        UserLogin(PeerIP,PeerPort,ParentNode);
  end;
end;
在我DLL中如果接受到一个XML包就回调主程序中的GetXML方法,GetXML又调用主窗口的Analyse_XML方法来分析XML包,进行相应处理,可是我调试的时候发现每次执行到
procedure TMainForm.Analyse_XML(PeerIP, PeerPort, sData: string);
var
  xmlDoc:IXMLDocument;
  ParentNode:IXMLNode;
begin
  xmlDoc:=NewXMLDocument;//执行到这里后,程序什么也没做了,主程序也没有死锁  

我不知道是为什么,回调函数能否调用窗口中的方法啊?我这个程序是错在哪里?

回复列表 (共2个回复)

沙发

刚刚调试,又出现了尚未调用'CoInitialize'

这是什么意思啊?请大家帮帮忙

板凳

我有个实例你看一下http://upload.programfan.com/upfile/20061024214425.rar

我来回复

您尚未登录,请登录后再回复。点此登录或注册