AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maximum überschreitet 0

Ein Thema von citybreaker · begonnen am 21. Aug 2004 · letzter Beitrag vom 11. Okt 2004
Antwort Antwort
citybreaker
(Gast)

n/a Beiträge
 
#1

Maximum überschreitet 0

  Alt 21. Aug 2004, 13:28
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:
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;
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Maximum überschreitet 0

  Alt 21. Aug 2004, 14:31
Hi,
laut deines Sources muss diese Zeile
Zitat von citybreaker:
subNode := kunden.item[i].selectSingleNode(names[j]);
ja auch
Code:
subNode := kunden.item[i].selectSingleNode([b]ANames[/b][j]);
lauten.

Chris
  Mit Zitat antworten Zitat
citybreaker
(Gast)

n/a Beiträge
 
#3

Re: Maximum überschreitet 0

  Alt 21. Aug 2004, 14:39
Ohje. Danke für deine Hilfe.

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.
Miniaturansicht angehängter Grafiken
screen_173.jpg  
  Mit Zitat antworten Zitat
Masterof

Registriert seit: 12. Feb 2004
Ort: Bad Elster
142 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Maximum überschreitet 0

  Alt 11. Okt 2004, 12:20
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
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Maximum überschreitet 0

  Alt 11. Okt 2004, 16:00
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. Aber leider vergesse ich das immer wieder. Werde das aber auf jedenfall bald machen.

Chris
  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 00:00 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