Txmldocument - problem

0

Witam,

jesli poloze na formie komponent XML z zakladki internet to taki oto kod dziala bez problemu.

 XMLDocument1.FileName := 'jakis_adres_www';
  XMLDocument1.Active:=True;

  for i := 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do
  begin
   showmessage(XMLDocument1.DocumentElement.ChildNodes[i].LocalName);
    Memo1.Lines.Add('+++'+XMLDocument1.DocumentElement.ChildNodes[i].LocalName);

    for j := 0  to    XMLDocument1.DocumentElement.ChildNodes[i].ChildNodes.Count-1 do
      Memo1.Lines.Add(format('%s=%s',
      [XMLDocument1.DocumentElement.ChildNodes[i].ChildNodes[j].LocalName,
       XMLDocument1.DocumentElement.ChildNodes[i].ChildNodes[j].NodeValue]));
  end;

powyzszy kod chcialem umiescic w watku bez umieszczania komponentu na formie, zrealizowalem to w nastepujacy sposob:

   xml2 := Txmldocument.Create(nil);
   try

   XML2.FileName := 'jakis_adres_www';
  XML2.Active:=True;

  for i := 0 to XML2.DocumentElement.ChildNodes.Count - 1 do
  begin
   showmessage(XML2.DocumentElement.ChildNodes[i].LocalName);
    Memo1.Lines.Add('+++'+XML2.DocumentElement.ChildNodes[i].LocalName);

    for j := 0  to    XML2.DocumentElement.ChildNodes[i].ChildNodes.Count-1 do
      Memo1.Lines.Add(format('%s=%s',
      [XML2.DocumentElement.ChildNodes[i].ChildNodes[j].LocalName,
       XML2.DocumentElement.ChildNodes[i].ChildNodes[j].NodeValue]));
  end;

   finally
      XML2.Free;
    end;

program sie kompiluje, ale podczas wykonywania tego kody wyskakuje blad:

Debbuger Exception Notification: Project raised exception class EAccsessViolation with message 'Access violation at adress [..]' Process stoped [..]

jakies pomysly dlaczego tak sie dzieje

0

przepraszam ze w nowym poscie pisze, ale nie mam mozliwosci edycji.

kod (znaleziony tutaj na forum) dziala, ale gdy umieszczam go w watku to nie kompiluje sie - czepia sie do self w "XML:=TXMLDocument.Create(Self);" :

[Error] test_watek.pas(77): There is no overloaded version of 'Create' that can be called with these arguments

procedure TForm1.testxml31Click(Sender: TObject);
var XML : TXMLDocument;
    NodeGowna : IXMLNode;
    XMLNode : IXMLNode;
begin
    try
        XML:=TXMLDocument.Create(Self);
        XML.FileName:='jakas_www';
        XML.Active:=TRUE;
        NodeGowna:= XML.ChildNodes.FindNode('glowna');
        if Assigned(NodeGowna) then begin
            XMLNode:= NodeGowna.ChildNodes.FindNode('numer');
            if XMLNode <> nil then
               ShowMessage(XMLNode.Text);
               //l.Caption:= XMLNode.AttributeNodes['nazwa'].Text;
              //l.SubItems.Add(XMLNode.AttributeNodes['opis'].Text);
              //l.SubItems.Add(XMLNode.NodeValue);
              //XMLNode:= XMLNode.NextSibling;
        end;
    finally
        XML.Free;
    end;
end;
0

xml2 := Txmldocument.Create(Application);

0

szukalem duzo w googlach - ale nie znalazlem zadnego przykladu wykorzystania XML w watku.

dzieki za nakierowanie

pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1