Oder erstmal nicht rekursiv:
Delphi-Quellcode:
procedure TForm1.OnJabberMessage(Sender: TObject; const Msg: IJabberMsg; const Tag: IXMLTag);
var
Nickname : string;
XMLIteratorEx : IXMLIteratorEx;
XMLNode : IXMLNode;
XMLTagIterator : IXMLTagIterator;
XMLTag : IXMLTag;
XMLCData : IXMLCData;
s : string;
begin
if Assigned(JabberSession.Roster.FindUserID(Msg.FromJID)) then
Nickname := JabberSession.Roster.FindUserID(Msg.FromJID).NickName;
AddMsgToRTF(rtfMsg, clRed, Now, Nickname, Msg.Body);
XMLIteratorEx := Tag.Children;
while XMLIteratorEx.HasNext do
begin
XMLNode := XMLIteratorEx.Next;
if XMLNode.IsTag then
begin
ShowMessage(XMLNode.Name);
XMLIteratorEx := XMLTag.Query(XMLNode.Name);
XMLNode := XMLIteratorEx.Next;
if XMLNode.IsTag then
ShowMessage(XMLNode.Name);
end;
end;
end;
Da bekomme ich in Zeile 22 eine
AV und weiter geht es dann nicht.