Ok Ich bin ein Stück weiter gekommen aber es hakt immer noch
Delphi-Quellcode:
function TForm1.getNodeSize(Node: TTreeNode): Int64;
var TempNode: TTreeNode;
Path: String;
OldIndex, i: Integer;
begin
Result := 0;
if Node.HasChildren then
begin
TempNode := Node.GetFirstChild;
repeat
Inc(Result, getNodeSize(TempNode));
TempNode := Node.GetNextChild(TempNode);
until TempNode = nil;
end;
OldIndex := Node.AbsoluteIndex;
if OldIndex = 0 then Path := ''
else Path := Node.Text;
for i := 0 to Node.Level-2 do
begin
Path := TreeView.Items[OldIndex].Parent.Text + '\' + Path;
OldIndex := TreeView.Items[OldIndex].Parent.AbsoluteIndex;
end;
Path := TreeView.Root + Path + '\';
Inc(Result, DirSize(Path));
Sizes[Node.AbsoluteIndex] := Result;
Node.Data := @Sizes[Node.AbsoluteIndex];
end;
Das liefert schon ganz gute Ergebnisse nur muss ich hierzu erst alle Einträge ausklappen (FullExpand) und außerdem werden versteckte Ordner nicht berücksichtigt. Wenn ich die versteckten Dateien im TreeView anzeigen lasse stürzt das Programm bei der Berechnung ab und bleibt außerdem an so Sachen wie fehlenden Netzwerkverknüpfungen hängen. Irgendwelche Ideen woran das liegen könnte bzw was man dagegen tun könnte??