AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi TXMLDocument ChildNodes, maximum 35?
Thema durchsuchen
Ansicht
Themen-Optionen

TXMLDocument ChildNodes, maximum 35?

Ein Thema von schwa226 · begonnen am 13. Feb 2010 · letzter Beitrag vom 25. Feb 2010
Antwort Antwort
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

TXMLDocument ChildNodes, maximum 35?

  Alt 13. Feb 2010, 22:59
Hi,

steh hier vor einen Problem.

Ich habe diese Funktion:
Delphi-Quellcode:
XMLDocument.LoadFromFile('C:\MyTest.xml');

ChildNodes := XMLDocument.DocumentElement.ChildNodes;

If ChildNodes <> NIL then
begin

for i := 0 to ChildNodes.Count - 1 do
//do copy node:
Node := ChildNodes.Nodes[i];
If (Node <> NIL) and (Node.Attributes['name'] = 'Service') then
//do stuff

end;
Nun ist mein ChildNode.Count 39, aber bei i = 35 kommt die Meldung Listenindex überschreitet Maximum (35)?

Oder geht es auch einfacher aus den Childnodes diesen Node zu finden ohne eine For-Schleife?
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: TXMLDocument ChildNodes, maximum 35?

  Alt 14. Feb 2010, 01:39
Nutzt du Klassen oder Interfaces? Versuch mal, alles was mit XML zu tun hat auf Interfaces umzustellen. Ich hatte auch einige unerklärliche Probleme, als ich die Klassen direkt genutzt habe und somit Interfaces und Klassen vermischt habe. Nachdem ich alles konsequent auf Interfaces umgestellt hatte, ging es dann.
  Mit Zitat antworten Zitat
fastsnake

Registriert seit: 18. Jan 2007
1 Beiträge
 
Delphi 7 Professional
 
#3

Re: TXMLDocument ChildNodes, maximum 35?

  Alt 25. Feb 2010, 14:33
Probier es mal so:

var
FNode: IXMLNode;

FNode := XMLDocument.DocumentElement.ChildNodes.First;

while assigned(FNode) do
begin

If (Node <> NIL) and (Node.Attributes['name'] = 'Service') then
begin
//do stuff
end;
FNode := FNode.NextSibling;

end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#4

Re: TXMLDocument ChildNodes, maximum 35?

  Alt 25. Feb 2010, 15:19
Wo genau kommt denn dieser Fehler? (welche Zeile)

PS: deine For-Schleife strimmte so nicht, denn das IF war dort nicht enthalten
Delphi-Quellcode:
XMLDocument.LoadFromFile('C:\MyTest.xml');

ChildNodes := XMLDocument.DocumentElement.ChildNodes;

If ChildNodes <> NIL then
begin
  for i := 0 to ChildNodes.Count - 1 do
  begin
    //do copy node:
    Node := ChildNodes.Nodes[i];
    If (Node <> NIL) and (Node.Attributes['name'] = 'Service') then
      //do stuff
  end;
end;
Delphi-Quellcode:
XMLDocument.LoadFromFile('C:\MyTest.xml');

Node := XMLDocument.DocumentElement.ChildNodes[0];
while Assigned(Node) and (Node.Attributes['name'] <> 'Service') do
  Node := Node.NextSibling;

If Assigned(Node) then
  //do stuff
Einfacher und ohne Schleife geht es z.B. über XPath
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#5

Re: TXMLDocument ChildNodes, maximum 35?

  Alt 25. Feb 2010, 15:24
Ich hatte damit noch nie Probleme. Der Verdacht liegt nahe, dass es ein anderes Problem gibt, aber wenn ich deinen Code anschaue habe ich das Gefühl, dass du uns einen Teil verschweigst...
  Mit Zitat antworten Zitat
viakt133

Registriert seit: 16. Feb 2010
18 Beiträge
 
Lazarus
 
#6

Re: TXMLDocument ChildNodes, maximum 35?

  Alt 25. Feb 2010, 17:14
Dankeeeee!

Da kann ich meine Baumstruktur ja auch mit dem XML Dokument aufbauen. Und danach schauen, ob das mit Treenode genauso geht. Juhuuuuu!

Könnte ja mit Treenode.Items[] auch gehen.

Genau das was ich hier gesucht habe! Da kommt bei BtnShowClick nämlich nix raus und der Debugge rhat mitr nur gesagt, das mein Zeiger zunächst gültig ist aber in der Schleife dann NIL wird. Aber was ich da anders machen muss, hat mitr der Debugger nicht gesgt. Schön, das es noch andere Threads gibt!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz