征求:列举目录中的文件清单(100分)

  • 主题发起人 主题发起人 yuanlehong
  • 开始时间 开始时间
Y

yuanlehong

Unregistered / Unconfirmed
GUEST, unregistred user!
我用下面的方法:
var fso:variant;
folder:variant;
files:variant;
thefolder:variant;
thefiles:variant;
thefilecounter:integer;
i:integer;
begin
fso:=createoleobject('scripting.filesystemobject');

thefolder:=fso.getfolder('c:/temp');
thefilecounter:=thefolder.files.count;
showmessage(inttostr(thefolder.files.count));

for i:=0 to thefilecounter-1 do
listbox1.Items.Add(thefolder.files.name);
它执行时,能显示文件数目的对框,但执行最后的语句时,出现 the parameter is incorrect的
错误,期待各高手指点。
 
这……犯得着这么干吗,完全可以用API搞定么
>执行最后的语句
最后的语句是什么语句?
这段代码最后的语句就是显示listbox,你说它正常啊
 
为什么不用FindFirst等?下面是摘自Help的例子… :)
procedure TForm1.Button1Click(Sender: TObject);

var
sr: TSearchRec;
FileAttrs: Integer;
begin
StringGrid1.RowCount := 1;
if CheckBox1.Checked then
FileAttrs := faReadOnly
else
FileAttrs := 0;
if CheckBox2.Checked then
FileAttrs := FileAttrs + faHidden;
if CheckBox3.Checked then
FileAttrs := FileAttrs + faSysFile;
if CheckBox4.Checked then
FileAttrs := FileAttrs + faVolumeID;
if CheckBox5.Checked then

FileAttrs := FileAttrs + faDirectory;
if CheckBox6.Checked then
FileAttrs := FileAttrs + faArchive;
if CheckBox7.Checked then

FileAttrs := FileAttrs + faAnyFile;

if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then

begin
with StringGrid1 do
begin
if (sr.Attr and FileAttrs) = sr.Attr then
begin
Cells[1,RowCount-1] := sr.Name;
Cells[2,RowCount-1] := IntToStr(sr.Size);
end;
while FindNext(sr) = 0 do
begin
if (sr.Attr and FileAttrs) = sr.Attr then
begin
RowCount := RowCount + 1;
Cells[1, RowCount-1] := sr.Name;

Cells[2, RowCount-1] := IntToStr(sr.Size);
end;
end;
FindClose(sr);
end;
end;
end;
 
看看Delphi自带的例子“Virtual Listview”如何实现这个功能的,不会有比它更好的代码了吧
 
多人接受答案了。
 
后退
顶部