Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Maximum überschreitet 0 (https://www.delphipraxis.net/28222-maximum-ueberschreitet-0-a.html)

citybreaker 21. Aug 2004 12:28


Maximum überschreitet 0
 
Mhm also es geht mal wieder um das Xml Tutorial. Hab es mal wieder ausgegraben, da es
nie geklappt hat und ich es nocheinmal probieren wollte.
Unzwar kommt beim starten der Exe immer die Fehlermeldung, dass das Maximum 0 überscheitet wird.
Dann wird folgende Zeile makiert:
Delphi-Quellcode:
subNode := kunden.item[i].selectSingleNode(names[j]);

Hier mal der gesamte Code.
Delphi-Quellcode:
procedure TMainFrm.FormCreate(Sender: TObject);
begin
  fAppPath := ExtractFilePath(Application.Exename);

  xmlDoc := CoDomDocument40.Create;
  xmlDoc.setProperty('NewParser', true);

  if not fileexists(fAppPath + Database_FName) then begin
    xmlDoc.loadXML('<?xml version="1.0"><kundendatenbank></kundendatenbank>');
  end else begin
    xmlDoc.load(fAppPath + Database_FName);
  end;

  if xmlDoc.parseError.errorCode <> 0 then begin
    MessageDlg('Die Xml Datei ist nicht korrekt!' + #13#10 +
               'Programm beendet sich selbstständig.', mtError, [mbOk], 0);
    Application.Terminate;
  end;

  UpdateList;
end;

procedure TMainFrm.UpdateList;
const
  AName: Array[0..1] of String =('name', 'vorname');
var
  kunden: IXmlDomNodeList;
  subNode: IXmlDomNode;
  i, j: integer;
begin
  LView.Items.Clear;
  LView.Items.BeginUpdate;

  kunden := xmlDoc.documentElement.selectNodes('kunde');
  for i := 0 to kunden.length -1 do begin
    subNode := kunden.item[i].selectSingleNode('name');
    LView.Items.Add;
    LView.Items[i].Caption := subNode.text;
    with LView.Items[0].SubItems do begin
      for j := 0 to length(AName) -1 do begin
        subNode := kunden.item[i].selectSingleNode(names[j]);
        if subNode <> nil then
          Add(subNode.Text)
        else
          Add('');
      end;
    end;
  end;

  LView.Items.EndUpdate;
end;

CalganX 21. Aug 2004 13:31

Re: Maximum überschreitet 0
 
Hi,
laut deines Sources muss diese Zeile
Zitat:

Zitat von citybreaker
Delphi-Quellcode:
subNode := kunden.item[i].selectSingleNode(names[j]);

ja auch
Code:
subNode := kunden.item[i].selectSingleNode([b]ANames[/b][j]);
lauten. ;)

Chris

citybreaker 21. Aug 2004 13:39

Re: Maximum überschreitet 0
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ohje. :wall: Danke für deine Hilfe. :wall:

Mhm ein Problem hab ich da noch. Unzwar wird die Xml Datei nichtz
vollstänig geladen. Volgendes steht drinne:

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<kundendatenbank>
  <kunde>
    <id>1</id>
    <name>Name 1</name>
    <vorname>Vorname 1</vorname>
  </kunde>
  <kunde>
    <id>2</id>
    <name>Name 2</name>
    <vorname>Vorname 2</vorname>
  </kunde>
</kundendatenbank>
Was angezeit wird seht ihr auf dem Screenshot im Anhang.

Masterof 11. Okt 2004 11:20

Re: Maximum überschreitet 0
 
Hallo!!

Habe geleiches Problem mit Listenindexüberschreitung, aber habe den Rechtschreibfehler nicht drin.

Hier mein Quelltext.

Delphi-Quellcode:
procedure TFrmmain.updatememo;
const
  Name: Array[0..1] of String =('german', 'english');
var
  words: IXmlDomNodeList;
  subNode: IXmlDomNode;
  i, j: integer;
begin
  LVwords.Items.Clear;
  LVwords.Items.BeginUpdate;

  words := xmlDoc.documentElement.selectNodes('words');
  for i := 0 to words.length -1 do begin
    subNode := words.item[i].selectSingleNode('german');
    LVwords.Items.Add;
    LVwords.Items[i].Caption := subNode.text;
    with LVwords.Items[0].SubItems do begin
      for j := 0 to length(Name) -1 do begin
        subNode := words.item[i].selectSingleNode(names[j]);
        if subNode <> nil then
          Add(subNode.Text)
        else
          Add('');
      end;
    end;
  end;

  LVwords.Items.EndUpdate
end;

procedure TFrmmain.FormCreate(Sender: TObject);
begin
 fapppath := Extractfilepath(Application.ExeName);

 xmlDoc := CoDomDocument40.Create;
 xmlDoc.setProperty('NewParser', true);

 if not fileexists(fAppPath + Database_FName) then begin
    xmlDoc.loadXML('<?xml version="1.0"><vocabulary></vocabulary>');
  end else begin
    xmlDoc.load(fAppPath + Database_FName);
  end;

 if xmldoc.parseError.errorCode <> 0 then
 begin
   Messagedlg('Das Databasefile ist nicht korrekt' + #10#13+
              'Das Programm wird nun geschlossen.' ,mterror, [mbOK], 0);
   application.Terminate;
 end;
 updatememo;
end;
MfG Master

CalganX 11. Okt 2004 15:00

Re: Maximum überschreitet 0
 
Hi,
lese dir mal diesen Beitrag durch. Da ist bereits das gleiche Problem aufgetreten. Ist ein Fehler im Tutorial, den ich bisher nicht korrigiert habe. :oops: Aber leider vergesse ich das immer wieder. Werde das aber auf jedenfall bald machen.

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz