@Computerbabalulu --
Was ich dazu sagen kann ist: Dein Ansatz ist mir etwas zu umständlich. Du hast eine Struktur wie die folgende:
XML-Code:
<Images Count="12">
<Image1 ... />
<Image2 ... />
<Image3 ... />
</Images>
Das sieht nur auf den ersten Blick vorteilhaft aus. Da aber eine
XML-Datei bspw. keine INI ist, bei der es in einer Sektion nur einen bestimmten Namen geben kann/darf, ist die Zählung überflüssig und erschwert
IMHO sogar die Programmierung.
MSXML (eigentlich jeder
XML-Parser) kennt so genannte
XPath-Anfragen. Sieh´s vereinfacht betrachtet wie einen Datenbank-
Query, mit dem du auf einen Schlag mehrere Informationen abfragen kannst. Würdest du auf die Zählung verzichten, würde dein Knoten wie folgt aussehen:
XML-Code:
<Images>
<Image .../>
<Image .../>
<Image .../>
</Images>
Das ist absolut kein Problem, da sich die einzelnen Knoten nicht in die Quere (in das
Query ) kommen. Notfalls hast du ja auch noch die "ID"-Attribute. Aber du hättest mit einer
XPath-Abfrage wie
Delphi-Quellcode:
nl := xmldoc.selectNodes('/Data/Images/Image');
// var nl : IXMLDOMNodeList
alle <Image>-Knoten in einem Array, das du nun der Reihe nach durchlaufen kannst:
Delphi-Quellcode:
for i := 0 to nl.length - 1 do
begin
{ ... }
end;
Innerhalb dieser Schleife kannst du die Attribute abfragen, die dich interessieren; sprich: Bildname, Anzahl der Kopien, usw. Und wie man das macht, das findest du bspw. im Tutorial von Chakotay erklärt. Aber es müsste auch hier im Forum genug [
dp="
xml Attribute"]Ergebnisse[/
dp] dazu geben.
Bei der Zählvariante von oben ist (ich sag´ mal) dummerweise auch jeder Knoten anders benannt. Das heißt: Man muss tatsächlich erst den Hauptknoten bzw. dessen "Count"-Attribut auslesen
Delphi-Quellcode:
node := xmldoc.selectSingleNode('/Data/Images/@Count'); // node = IXMLDOMNode
ShowMessage(node.text);
und dann muss man auf die gleiche Weise jeden einzelnen Knoten abfragen, wobei der Zählwert zu berücksichtigen ist, weil er im Namen steckt. Und das ist, meiner Ansicht nach, umständlich.
Zum Auflisten würde ich übrigens kein Memo sondern eher eine List-View verwenden.