delphi如何搜索某一文件夹下的所有文件夹,显示在ListBox内?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi如何搜索某一文件夹下的所有文件夹,显示在ListBox内?相关的知识,希望对你有一定的参考价值。
delphi如何搜索某一文件夹下的所有文件夹,显示在ListBox内?
用递归查找后死机,到底怎么办啊?
var
Dir: TSearchRec;
Ret: integer;
Path: string;
begin
Result:=Tstringlist.Create;
try
Path := ExtractFilePath(AParentDir);
Ret := Sysutils.FindFirst(AParentDir, faAnyFile, Dir);
if Ret <> NO_ERROR then exit;
try
while ret=NO_ERROR do
begin
if (Dir.Attr in [faDirectory]) and (Dir.Name[1] <> '. ') then
begin
Result.Add(Dir.name);
Result.addstrings(GetChildDir(Path + Dir.Name + '\*.* '));
end;
Ret := Sysutils.FindNext(Dir);
end;
finally
Sysutils.FindClose(Dir);
end;
except
Result.Free;
end;
end;
调用这个函数,再把返回值读入LISTBOX就可以了。本回答被提问者采纳
我如何输出delphi中某一列下的所有行?
procedure TfrmPlayers.btnPlayersClick(Sender: TObject);
var
i: integer;
begin
memoPlayers.Clear;
with dbgPlayers do
begin
for i := 0 to FieldCount-1 do
begin
memoPlayers.Lines.Add(Fields[i].AsString);
end;
end;
end;
我找到了用于输出第一行中所有列的解决方案。但我想让它在某一列下输出所有行。
答案
您需要遍历所有行(如注释中提到的@BugFinder)。您可以考虑包括两个附加步骤:
- 记住数据集中的记录,以便以后使用
TBookMark
导航。 - 使用
DisableControls
插入数据时禁用数据显示。
示例(根据您的代码):
procedure TfrmPlayers.btnPlayersClick(Sender: TObject);
var
i: integer;
b: TBookMark;
begin
// Clear existing data
memoPlayers.Clear;
// Get the data
b := dbgPlayers.GetBookmark;
dbgPlayers.DisableControls;
try
dbgPlayers.First;
while not dbgPlayers.Eof do begin
for i := 0 to dbgPlayers.FieldCount-1 do begin
memoPlayers.Lines.Add(dbgPlayers.Fields[i].AsString);
endfor;
dbgPlayers.Next;
endwhile;
finally
if dbgPlayers.BookmarkValid then dbgPlayers.GotoBookmark(b);
dbgPlayers.FreeBookmark(b);
dbgPlayers.EnableControls;
endtry;
end;
以上是关于delphi如何搜索某一文件夹下的所有文件夹,显示在ListBox内?的主要内容,如果未能解决你的问题,请参考以下文章