Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

Re: Jabber XMLStream parsen

  Alt 23. Feb 2006, 09:10
Vergessen wir das erstmal. Das war noch eine ziemlich unausgereifte Idee.

Aber da gibt es noch ein Problem:
Delphi-Quellcode:
function GetTagValue(iter: IXMLIteratorEx; ATag: String): String;
var
  xn : IXMLNode;
begin
  while iter.HasNext do
  begin
    xn := iter.Next;
    if xn.IsTag then
      with xn as IXMLTag do
      begin
        if (xn as IXMLTag).Name = ATag then
        begin
          result := (xn as IXMLTag).Data;
          exit;
        end
        else
        begin
          result := GetTagValue(children, ATag);
        end;
      end;
  end;
end;
Diese Funktion soll mir den Inhalt eines Tags zurückgeben. So weit so gut. Funktioniert auch, aber nur einmal, beim ersten Mal. Das Problem wird dfaran liegen, dass ich den Paramter iter global deklarieren musste:
Delphi-Quellcode:
procedure TForm1.OnJabberMessage(Sender: TObject; const Msg: IJabberMsg; const Tag: IXMLTag);
var
  sl : TStringList;
begin
  XI := Tag.Children; // global!!!
Und dann der Aufruf:
Delphi-Quellcode:
procedure TForm1.cbTagsChange(Sender: TObject);
begin
  ShowMessage(cbTags.Text + ': ' + GetTagValue(XI, cbTags.Text));
end;
Ich denke, ich weiß, was passiert: XI steht nach dem Aufruf an der Stelle, an der er was gefunden hatte. Wie löse ich das Problem jetzt am geschicktesten?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat