Ich würde TFolder von Objektlist ableiten und jedem Ordnerobjekt die Information über sein übergeordnetes Verzeichnis mitgeben:
Delphi-Quellcode:
TFolder = class(TObjectList)
constructor Create(AParent: TFolder; AName: string);
private
FParent: TFolder;
FName: string;
function getAbsolutePath(): String;
public
property AbsolutePath : String read getAbsolutePath;
property Parent: TFolder read FParent write FParent;
property Name: String read FName write FName;
end;
constructor TFolder.Create(AParent: TFolder; AName: string);
begin
inherited Create;
FParent := AParent;
FName := AName;
if Assigned(AParent) then
AParent.Add(Self);
end;
function TFolder.getAbsolutePath(): String;
begin
Result := Name;
if Assigned(Parent) then
Result := Parent.AbsolutePath + '\' + Result;
end;
Der Constructor braucht kein reintroduce.
Zitat von
JonnyGuitar:
Muss ich hier schon hergehen und
noch 2 Objekte vom Typ TFolder erstellen und den Pointer darauf FSubdirs übergeben?
Da jedes TFolder-Objekt einen Ordner repräsentiert, natürlich auch für jeden Ordner eines erstellen.
Delphi-Quellcode:
Root := TFolder.Create(nil, 'C:\');
Parse(Root);
procedure Parse(AFolder: TFolder);
var
sPath: string;
begin
sPath := AFolder.AbsolutePath
{...Schleife über alle Verzeichnisse in sPath...}
begin
sSubOrdnername := {...};
SubFolder := TFolder.Create(AFolder, sSubOrdnername);
Parse(SubFolder);
end;
end;