Aber warum ändert sich P, wenn ich nur MyResult ändere? Das will mir irgendwie nicht in den Kopf gehen...
Delphi-Quellcode:
procedure TBauteilListe.GetPBauteil(ID: string);
procedure Rekursiv(p: PBauteil;const 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); // FPBauteil ist das Ergebnis, ein Pointer, der Auf das gefundene bauteil zeigt, Private Variable Meiner Klasse, die Klasse sieht so aus:
end;
type
TBauteilListe=class(Tobject)
private
FRoot,
FPBauteil: PBauteil;
FList: TStringlist;
function GetBauteil(ID: string): PBauteil;
function GetText: string;
procedure GetPBauteil(ID: string);
procedure SetLines(var MyResult: TStringlist);
procedure NilBauteile;
public
constructor Create;
destructor Destroy; override;
function Attach(ParentID,ChildID: string): boolean;
function AddBauteil(ID: string; Typ: TBauteilTyp; Parent: string): boolean;
property Items[ID: string]: PBauteil read GetBAuteil;
property Text: string read GetText;
end;
Ich blick da einfach nicht durch, warum das mit P so ist, und weiß nicht wie ich es anders machen kann, sitzt da jetzt seit nen paar stunden dran, es wäre nett, wenn du mir das umschreiben könntest...