AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Warum funktioniert rekursiv aufgerufene Procedure nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum funktioniert rekursiv aufgerufene Procedure nicht?

Ein Thema von chris_82 · begonnen am 3. Sep 2003 · letzter Beitrag vom 5. Sep 2003
 
chris_82

Registriert seit: 26. Aug 2003
112 Beiträge
 
Delphi 6 Enterprise
 
#1

Warum funktioniert rekursiv aufgerufene Procedure nicht?

  Alt 3. Sep 2003, 13:19
Also ich hab mir folgende Procedure geschrieben:

Delphi-Quellcode:
procedure Tfrm_haupt.abschnitte_erstellen(var kno_a:ixmlnode; var xml_z:ixmlnode);
var
  i,anz_abschnitte:integer;
  const c_Abschnitt='Abschnitt';
  const c_TLG='TLG';
begin
 anz_abschnitte:=kno_a.ChildNodes[0].ChildNodes.Count;
 if anz_abschnitte > 1 then
 begin
  begin
   begin
    for i:=0 to anz_abschnitte-1 do
    begin
     if kno_a.ChildNodes[0].ChildNodes[i].AttributeNodes['Typ'].Text='Knotenthen
     begin
      xml_z.AddChild(c_Abschnitt);

      xml_z.Childnodes[i].Attributes['Bez']:=kno_a.AttributeNodes['Bez'].Text;
     end
     else if kno_a.ChildNodes[0].ChildNodes[i].AttributeNodes['Typ'].Text='TLGthen
     begin
      xml_z.AddChild(c_TLG);
      xml_z.Childnodes[i].Attributes['I']:=kno_a.ChildNodes[0].Childnodes[i].AttributeNodes['IR'].Text;
      xml_z.ChildNodes[i].Attributes['Bez']:=kno_a.ChildNodes[0].Childnodes[i].AttributeNodes['Bez'].Text;
     end;
     kno_a:=kno_a.ChildNodes[0].ChildNodes[i];
     xml_z:=xml_z.Childnodes[i];
     abschnitte_erstellen(pkno_abschnitt,abschnitt_knoten);
    end;
   end;
  end;
 end;
end;
diese rufe ich so auf:

Delphi-Quellcode:
 pkno_abschnitt:=pkno_nodes[Lb_Leistungsbereich.ItemIndex];
 abschnitt_knoten:=xml_ziel.ChildNodes['Stlbzlb'];

 abschnitte_erstellen(pkno_abschnitt,abschnitt_knoten);
es geht darum ein XML Dokument solange nach einem Knoten zu durchsuchen und entsprechen einen Knoten in ein neues Dokument zu schreiben, bis es diesen Knoten nicht mehr gibt. Der Knoten nach dem ich suche kann immer und immmer wieder in sich selbst vorkommen, siehe folgendes Schema (1.)

Code:

Die Schemata als grafische Darstellung:

1.
           /-lkno-----kno(0-unendlich)  
kno-------/
          \
           \-zus

2.
                            (Abschnittstyp]
                         **********************************************
                         *  /-hinw                                   *
                         * /                                          *
stl--------abschnitt------/                                           *
          (0-unendlich) * \                       *****************  *
                         *  \     /-Abschnitt-------Abschnittstyp *  *
                         *   \   /                 *****************  *
                         *    \-/                                     *
                         *      \                                     *
                         *       \                                    *
                         *        \tl (0-unendl.                      
                         **********************************************

und ich schreibe dann eben in ein anderes Dokument, da kann ein Knoten ebenfalls wieder unendliche male in sich vorkommmen.

Nun habe ich das Problem, den ersten Durchlauf macht die Procedure Problemlos, aber beim nächsten ist der listindex überschritten.

Aber ich kann keinen Fehler finden.....

[edit=Daniel B]Titel korrigiert. Mfg, Daniel B[/edit]
....oop und nun...??
http://www.sengewald.info
  Mit Zitat antworten Zitat
 


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 08:42 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