Thema: Delphi XML-Tutorial

Einzelnen Beitrag anzeigen

Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#37

Re: XML-Tutorial

  Alt 7. Jul 2004, 15:22
So,

bin jetzt schon weiter. Habe die procedure UpdateList erstellt und einen Datensatz in die XML-Datei eingetragen. Doch wenn ich die Prozedur ausführe, dann schreibt er nichts in die ListView, sondern gibt folgende Meldung aus:

Listenindex überschreitet -1 meine Prozedur sieht so aus:

Delphi-Quellcode:
procedure TForm1.UpdateList;
const
  NAMES: array[0..8] of string = ('name', 'format', 'ton',
                                  'anzmedien', 'bildqualität',
                                  'tonqualität', 'gesamt',
                                  'verliehen', 'comment');
var
  movies : IXMLDOMNodeList;
  subnode: IXMLDomNode;
  i, j : Integer;

begin
  ListView1.Items.Clear;
  ListView1.Items.BeginUpdate;

  movies:=xmlDoc.documentElement.selectNodes('movie');
  for i:=0 to movies.length -1 do begin
    subnode:=movies.item[i].selectSingleNode('id');
    ListView1.Items.Add;
    ListView1.Items[i].Caption:=SubNode.Text;
    with ListView1.Items[i].SubItems do begin
      for j:=0 to length(NAMES[-1]) do begin
        subNode:=movies.item[i].selectSingleNode(NAMES[j]);
        if subNode <> nil then
          Add(SubNode.text)
        else
          Add('');
        end;
      end;
    end;

    ListView1.Items.EndUpdate;
  end;
und meine XML-Datei so:

Delphi-Quellcode:
<?xml version="1.0" encoding="ISO-8859-1"?>
<movieorganizer>
  <movie>
    <id>1</id>
    <name>Der Schuh des Manitu</name>
    <format>DVD</format>
    <ton>DD5.1</ton>
    <anzmedien>2</anzmedien>
    <bildqualität>1+</bildqualität>
    <tonqualität>1</tonqualität>
    <gesamt>1+</gesamt>
    <verliehen></verliehen>
    <comment>Lustige Komödie mit Bully.</comment>
    <screenshot />
  </movie>
</movieorganizer>
Alles streng nach Beispiel.

Doch diese Stelle der Prozedur musst ich von:

for i:=0 to length(NAMES)-1 do begin in

for j:=0 to length(NAMES[-1]) do begin ändern, da folgende Comp-Meldung erschien:

[Fehler] Unit1.pas(65): '[' erwartet, aber ')' gefunden.
  Mit Zitat antworten Zitat