Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Problem mit einer Stringlist und Pointern

  Alt 11. Jan 2007, 12:26
Ich hab mal kurz durchgesucht. Also bis jetzt war für mich auf Anhieb nicht zu erkennen, was du mit was und wo bezweckst. Das ist jetzt vielleicht auch nicht wichtig.

Ich hab mal deinen Fehler eingegrenzt, er passiert hier:
Delphi-Quellcode:
       if p^.Next <> nil
          then
            for i := low(p^.next) to high(p^.next) do
              Rekursiv(p^.next[i],Search,p);
1. (Hat nicht direkt mit dem Fehler zu tun) Du kannst statt "if p^.next<>nil" bess die Länge des Arrays überprüfen if "length(p^.next)>0". Wobei ich mir grad die Frage stelle, ob das überhaupt sein muss, da im anderen Fall die Schleife einfach nie durchlaufen würde.

2. Da ich jetzt den Quelltext besser kenne, sehe cih, dass mein vorheriger Hinweis "FRoot^.Next := nil;" zu setzen nicht sinnvoll ist. Wenn dann eher setlength(FRoot^.next,0);
Das next ist ja ein dynamisches Array.

3. Der Fehler tritt auf, wenn in dem Array p^.next mehr als 1 Element drin ist. Das bedeutet, er führt rekursiv min 2 mal durch.
Nun kann es sein, dass er beim 1. mal aufrufen von "Rekursiv(p^.next[i],Search,p); " das p innerhalb der Funktion so ändert, dass p^.next[i] nicht mehr existiert.

Verstanden?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat