Zitat:
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?
Ehrlich gesagt nicht
Delphi-Quellcode:
procedure TBauteilListe.GetPBauteil(ID: string);
procedure Rekursiv(p: PBauteil; Search: string; var MyResult: PBauteil);
var i: integer;
begin
if p <> nil
then
if p^.ID = Search
then
MyResult := p
else
if length(p^.Next) > 0
then
for i := low(p^.next) to high(p^.next) do
Rekursiv(p^.next[i],Search,p);
end;
begin
Rekursiv(FRoot,ID,FPBauteil);
end;
Das ist die Procedure. Meinst, dass der P ändert? Der soll Rekursiv ja N mal durchführen. wobei N die Anzahl der Einträge im Array ist. P wird doch garnicht angerührt, oder sehe ich das falsch? Und wenn p^.next[i] nicht mehr existiert, warum zeigt er es dann noch in der Liste an? er aktualisiert die Liste ja mit jedem neuen Eintrag...
Jedenfalls danke dass du drübergeschaut hast!