AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TShellTreeView mit Ordnergrößen

Ein Thema von Flogo · begonnen am 12. Aug 2003 · letzter Beitrag vom 16. Aug 2003
Antwort Antwort
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#1

TShellTreeView mit Ordnergrößen

  Alt 12. Aug 2003, 18:33
Ich würde gerne in ein ShellTreeView zu jedem Ordner die Ordnergöße als Node.Data dazuspeichern und komme dabei nicht weiter
Code:
function TForm1.getNodeSize(Node: TTreeNode): Int64;
begin
  if Node.HasChildren then
  begin
    Size := Size + getNodeSize(); //von allen Child-Nodes???
  end
  else
  begin
    Node.Data := DirSize(Node.Text); //soll später die Größe des Ordners auf unterster Ebene liefern
    Result := Node.Data;
  end;
end;
geht das überhaupt so? (rekursiv denken war noch nie meine Stärke)
Wie krieg ich raus was die Childs sind?
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#2

Re: TShellTreeView mit Ordnergrößen

  Alt 16. Aug 2003, 18:49
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??
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz