Entwickler-Ecke

Internet / Netzwerk - idftp.directorylisting.items[index].size


smepal - Mi 28.05.08 13:26
Titel: idftp.directorylisting.items[index].size
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

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;