Nimm´s mir nicht übel, aber du hast einen saumäßigen Code hingeschmiert. Lösch bspw. mal den "id"-Knoten aus deiner
XML-Datei und probier´s noch mal.
Hier eine Variante, die funktioniert:
Delphi-Quellcode:
procedure TForm1.UpdateList;
const
NAMES : array[0..2]of string = ('name','format','ton');
var
movies : IXMLDOMNodeList;
subNode : IXMLDOMNode;
i,
j : integer;
li : TListItem;
begin
if(xmldoc = nil) then exit;
MovieList.Items.Clear;
MovieList.Items.BeginUpdate;
movies := xmldoc.selectNodes('//movie');
for i := 0 to movies.length - 1 do
begin
subnode := movies.item[i].selectSingleNode('id');
li := MovieList.Items.Add;
if(subnode <> nil) then li.Caption := subnode.text
else li.Caption := '?';
for j := 0 to length(NAMES) - 1 do
begin
subnode := movies.item[i].selectSingleNode(NAMES[j]);
if(subnode <> nil) then li.SubItems.Add(subnode.text)
else li.SubItems.Add('unbekannt');
end;
end;
MovieList.Items.EndUpdate;
end;
Neben einem genauen Blick ins Tutorial von Chakotay empfehle ich auch ein paar Grundlagen. Das wäre bei deiner Ratlosigkeit zur Fehlermeldung
Zitat:
"Inkompatible Typen: 'string' und 'array'."
sicher nicht verkehrt.
@Chakotay: Wie isses? Woll´n wir dein Tutorial noch zum Thema Doctypes und XSL ergänzen?