Forum: Object-Pascal / Delphi-Language
by Luckie,
23. Feb 2006
Vergessen wir das erstmal. Das war noch eine ziemlich unausgereifte Idee.
Aber da gibt es noch ein Problem:
function GetTagValue(iter: IXMLIteratorEx; ATag: String): String;
var
xn : IXMLNode;
begin
while iter.HasNext do
begin
Forum: Object-Pascal / Delphi-Language
by Luckie,
22. Feb 2006
Danke. Werde ich mir mal angucken.
Forum: Object-Pascal / Delphi-Language
by Luckie,
22. Feb 2006
Jetzt wollte ich das in eine rekursive Funktion umbauen:
function GetTags(iter: IXMLIteratorEx): string;
var
xn : IXMLNode;
begin
while iter.HasNext do
begin
xn := iter.Next;
if xn.IsTag then
Forum: Object-Pascal / Delphi-Language
by Luckie,
21. Feb 2006
Ächtz. Acht Stunden am Stück vorm Computer sitzen scheint tötlich zu sein. :oops: Dank dir. ;)
Forum: Object-Pascal / Delphi-Language
by Luckie,
21. Feb 2006
Hm, noch ein kleines Problem:
function GetFontColor(iter: IXMLIteratorEx): string;
var
xn : IXMLNode;
s : string;
begin
while iter.HasNext do
begin
Forum: Object-Pascal / Delphi-Language
by Luckie,
21. Feb 2006
Jupp, hast Recht. So geht es:
procedure TForm1.GetTags(iter: IXMLIteratorEx; s: TStrings);
var
xn : IXMLNode;
begin
while iter.HasNext do
begin
xn := iter.Next;
if xn.IsTag then
Forum: Object-Pascal / Delphi-Language
by Luckie,
21. Feb 2006
Prima das klappt wunderbar. :P Nur wie komme ich jetzt an die Daten von einem Tag dran?
<message id="JCOM_3" to="mp-test@datawerk.de" from="mp@datawerk.de/DWJabberClient">
<foobar type="mp-extra-tag">
<color>clOlive</color>
</foobar><body/>
</message>
Beispielsweise hier an den Wert clOlive? IXMLTag hat zwar die Eigenschaft Data, die diesen Wert wohl enthalten soll, aber mir ist...
Forum: Object-Pascal / Delphi-Language
by Luckie,
21. Feb 2006
Hm, werde ich mir gleich mal angucken. Dank dir noch mal.
Forum: Object-Pascal / Delphi-Language
by Luckie,
21. Feb 2006
Nachtrag: Ich habe jetzt daraus mal eine Funktion gemacht, denn die ShowMessage nützt mir ja nichts. ,)
function TForm1.GetTags(iter: IXMLIteratorEx): String;
var
xn: IXMLNode;
begin
while iter.HasNext do
begin
xn := iter.Next;
if xn.IsTag then with xn as IXMLTag do
Forum: Object-Pascal / Delphi-Language
by Luckie,
20. Feb 2006
Danke für deine Hilfe, ich werde das morgen an der Arbeit mal ausprobieren. ;)
Forum: Object-Pascal / Delphi-Language
by Luckie,
20. Feb 2006
Oder erstmal nicht rekursiv:
procedure TForm1.OnJabberMessage(Sender: TObject; const Msg: IJabberMsg; const Tag: IXMLTag);
var
Nickname : string;
XMLIteratorEx : IXMLIteratorEx;
XMLNode : IXMLNode;
XMLTagIterator : IXMLTagIterator;
XMLTag : IXMLTag;
XMLCData : IXMLCData;
Forum: Object-Pascal / Delphi-Language
by Luckie,
20. Feb 2006
Ich lege mir beim Senden einer Nachricht ein paar extra Knoten in dem XMLStream an. Der sieht dann so aus:
<message id="JCOM_2" to="mp@datawerk.de" from="mp-test@datawerk.de/DWJabberClient">
<foobar type="mp-extra-tag">
<color>clOlive</color>
</foobar>
<body>test</body>
</message>
Jetzt wollte ich den natürlich wieder auslesen und alle Tags erhalten. Also foobar, color und...