인디 소켓을 이용해서 XML을 전송했습니다.
그리고 그 XML을 TXMLDocument.XML에 넣었구요.
그리고 작업을 하려고 하면 에러가 납니다.
에러는 MSXML을 인스톨하지 않았다구 나오네요..
근데 이상한건 그냥 TXMLDocument를 폼에 올려 놓구 버튼 클릭시
속성들을 얻어오면 잘됩니다.
그래서 스레드로도 해 보구 버튼 클릭 이벤트를 발생 시켜
봤는데도 똑 같습니다.
아시는분 계시면 답변 부탁 드립니다.
XML문서와 소스 올립니다.
//버튼이 클릭되었을때 - 잘 돌아감
procedure TForm1.Button1Click(Sender: TObject);
var
Node: IXMLNode;
temp: string;
begin
try
XMLDocument := TXMLDocument.Create(Self);
XMLDocument.XML.Clear;
XMLDocument.XML.Add('<?xml version="1.0" ?>');
XMLDocument.XML.Add('<power><service type="request" action="list">aa</service></power>');
Memo1.Lines.AddStrings(XMLDocument.XML);
try
XMLDocument.Active := True;
Node := XMLDocument.DocumentElement.ChildNodes.FindNode('service');
temp := Node.Attributes['type'];
Memo1.Lines.Add(temp);
except
Memo1.Lines.Add('error');
end;
finally
XMLDocument.Free;
end;
Memo1.Lines.Add('complete2');
end;
//인디 소켓에서 - 에러남
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
RcvTxt: string;
Node: IXMLNode;
temp: string;
begin
RcvTxt := AThread.Connection.ReadLn;
try
XMLDocument := TXMLDocument.Create(Self);
XMLDocument.XML.Clear;
XMLDocument.XML.Add(RcvTxt);
Memo1.Lines.AddStrings(XMLDocument1.XML);
try
XMLDocument.Active := True;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^요기서 에러가.. -.-;;
Node := XMLDocument.DocumentElement.ChildNodes.FindNode('service');
temp := Node.Attributes['type'];
Memo1.Lines.Add(temp);
except
Memo1.Lines.Add('error');
end;
finally
XMLDocument.Active := False;
XMLDocument.Free;
end;
Memo1.Lines.Add('complete2');
end;
|