如何统计文件个数????????????????????????????????????????????????????/(20分)

  • 主题发起人 主题发起人 tobbs
  • 开始时间 开始时间
T

tobbs

Unregistered / Unconfirmed
GUEST, unregistred user!
用SelectDirectory以后,想统计这个目录下的文件个数,文件总大小,如何编写?
 
统计大小不会:(个数如下
var
flb: tfilelistbox;
i: integer;
a: TObject;
begin
filepath := ExtractFilePath(Application.ExeName);

flb := tfilelistbox.Create(self);
flb.mask := '*.*';
flb.parent := self;
flb.directory := filepath + 'testlist/';
for i := 0 to flb.items.Count - 1 do
begin
combobox1.AddItem(flb.Items, a);
combobox2.AddItem(flb.Items, a);
combobox3.AddItem(flb.Items, a);
end;
flb.Free;
end;
 
?没怎么看懂,最好不用tfilelistbox,直接选择目录而得出目录里的文件个数行吗?
 
如果含子目录,用递归!
 
利用TSearchRec。
在Delphi帮助里查找 FindFirst function,通过Example链接有详细的例子(与你的
要求非常接近)。
TSearchRec的帮助你自己应该能找到了。
需要注意的是,返回的名字包含"."和"..",分别指本级目录和上级目录,统计文件
个数时应将这两个给跳过。
 
这是统计大小的(需要加入到listbox中,自己修改吧),统计个数的上面已经有了[:D]
procedure TForm1.Button1Click(Sender: TObject);
var
I : Integer;
FileHandle : THandle;
FileSize : Integer;
begin
for I := 0 to listbox1.Items.Count-1 do
begin
FileHandle := FileOpen(filelistbox1.Directory+'/'+listbox1.Items,fmOpenRead);
if FileHandle<> -1 then
begin
FileSize := FileSize+FileSeek(FileHandle,0,2);
end;
FileClose(FileHandle);
end;
edit1.Text:= IntToStr(FileSize);
end;
 
如果含子目录,怎么用递归?
 
后退
顶部