Autor Beitrag
smepal
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68

Win XP, Linux Mandbrake,SUSE 10.1, SUSE 9 PE, DEBIAN, Win 2000 Pro, Win XP Pro
Delphi
BeitragVerfasst: Mi 28.05.08 13:26 
Hallo,
ich will mittels einer Schleife die Dateigrößen aller Dateien in einem Ordner inklusive Unterordner ermitteln und diese zusammenrechnen.
Das Auslesen der Ordner funktioniert, nur das Ermitteln der Dateigrößen klappt noch nicht.
Bekomme immer die Fehlermeldung, das der Listenindex überschritten wird!

Hier meine Procedure
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
procedure getfilesinserverdir(adir,async_dir: String; aftp: Tidftp; Alist, Alistcl: TStringlist; Achronik: TListbox);
var
  e: Integer;
  aseclist: TStringlist;
begin
alist := TStringlist.Create;
alistcl := TStringlist.Create;
    aseclist := TStringlist.Create;
    //Laden des Serverdateibaums
    aftp.list(alist,'',false);
    //achronik.Items.add('ServerlistCL befüllen');
    //Rekursive Abfrage nach Unterordnern
    for e:=0 to alist.Count-1 do
      begin
    // wenn Ordner
      if ((alist[e] <> '.'and (alist[e] <> '..')) then
        begin
        if ansipos('.',alist[e])=0 then
          begin
          achronik.Items.Add('Ordner entdeckt: '+alist[e]);
          aftp.ChangeDir(alist[e]);
          aftp.List(aseclist,'',false);

          //Rekursiver Aufruf für Unterordner
          getfilesinserverdir(adir+alist[e]+'/',async_dir,aftp,aseclist,alistcl,achronik);
          aftp.ChangeDirUp;
          end
        else
        //Wenn kein Ordner
          begin
          //Wenn in Unterordner
          if not (adir = ''then
            begin
//            alistcl.Add(adir+alist[e]);
           achronik.Items.add('ServerlistCL hinzufügen: '+adir+ alist[e]+'    '+inttostr(aftp.DirectoryListing.Items[e].size));
            filessize:= filessize+aftp.DirectoryListing.Items[e].size;
            end
          else
          //Wenn in Hauptordner
            begin
//            alistcl.Add(alist[e]);
achronik.Items.add('ServerlistCL hinzufügen: '+alist[e]+'    '+inttostr(aftp.DirectoryListing.Items[e].size));
            filessize:= filessize+aftp.DirectoryListing.Items[e].size;
            end;
          end;
        end;
      end;
end;