如何在知道路径的情况下列出所有文件(100分)

  • 主题发起人 主题发起人 nod
  • 开始时间 开始时间
N

nod

Unregistered / Unconfirmed
GUEST, unregistred user!
我想编一个程序,输入一个路径如"c;/windows/"
想在memo中列出所有的文件和子文件夹
那位大虾帮帮我?最好给出源程序.
 
我这个是bcb自带的,
TSearchRec sr;
int iAttributes = 0;
StringGrid1->RowCount = 1;
iAttributes |= faReadOnly * CheckBox1->Checked;
iAttributes |= faHidden * CheckBox2->Checked;
iAttributes |= faSysFile * CheckBox3->Checked;
iAttributes |= faVolumeID * CheckBox4->Checked;
iAttributes |= faDirectory * CheckBox5->Checked;
iAttributes |= faArchive * CheckBox6->Checked;
iAttributes |= faAnyFile * CheckBox7->Checked;
StringGrid1->RowCount = 0;
if (FindFirst(Edit1->Text, iAttributes, sr) == 0)

{
do
{
if ((sr.Attr & iAttributes) == sr.Attr)
{
StringGrid1->RowCount = StringGrid1->RowCount + 1;
StringGrid1->Cells[1][StringGrid1->RowCount-1] = sr.Name;
StringGrid1->Cells[2][StringGrid1->RowCount-1] = IntToStr(sr.Size);
}
} while (FindNext(sr) == 0);
FindClose(sr);
}
 
function AddFile(Directory:String):Boolean;
var
hFindFile: THandle;
Win32FD: TWin32FindData;
begin
Result := False;
Form1.Memo1.Clear;
if not SetCurrentDir(Directory) then
Exit;
hFindFile := FindFirstFile(PChar('*.*'), Win32FD);
if hFindFile <> INVALID_HANDLE_VALUE then
try
repeat
if Win32FD.dwFileAttributes <>FILE_ATTRIBUTE_DIRECTORY then
Form1.Memo1.Lines.Add('<文件>'+Win32FD.cFileName)
else
Form1.Memo1.Lines.Add('<目录>'+Win32FD.cFileName);
until not FindNextFile(hFindFile, Win32FD);
finally
Windows.FindClose(hFindFile);
end;
end;

文件放在Memo中不好,换为Listview就可以对文件和目录排序了
 
用FileListBox,隐藏起来用。看它的ItemList等属性就可以方便地得到。编程不一定用代码最少的方法,而是用最简单的方法,这样最节省人力资源。
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
回复
0
查看
816
不得闲
D
回复
0
查看
878
DelphiTeacher的专栏
D
后退
顶部