gpt4 book ai didi

delphi - 使用delphi在字符串网格中列出目录中的所有文件

转载 作者:行者123 更新时间:2023-12-03 19:04:43 26 4
gpt4 key购买 nike

我正在使用Delphi 7,我想在字符串网格中列出给定目录中的所有文件(每行一个文件,一列所有)。我已经搜索了大约一个小时,但找不到任何有关如何执行此操作的示例,因此,您能提供的任何帮助将不胜感激。

最佳答案

这将用指定文件夹中的所有文件填充TStrings后代(例如,TStringListTMemo.Lihes等):

function  GetFiles(const StartDir: String; const List: TStrings): Boolean;
var
SRec: TSearchRec;
Res: Integer;
begin
if not Assigned(List) then
begin
Result := False;
Exit;
end;
Res := FindFirst(StartDir + '*.*', faAnyfile, SRec );
if Res = 0 then
try
while res = 0 do
begin
if (SRec.Attr and faDirectory <> faDirectory) then
// If you want filename only, remove "StartDir +"
// from next line
List.Add( StartDir + SRec.Name );
Res := FindNext(SRec);
end;
finally
FindClose(SRec)
end;
Result := (List.Count > 0);
end;


像这样使用它来填充您的 TStringGrid(下面的代码中的 Grid-我添加了代码以根据最长文件名的长度自动调整列的大小):

var
SL: TStringList;
i: Integer;
MaxWidth, CurrWidth: Integer;
const
Padding = 10;
begin
SL := TStringList.Create;
try
if GetFiles('C:\Temp\', SL) then
begin
MaxWidth := Grid.ColWidths[0];
for i := 0 to SL.Count - 1 do
begin
CurrWidth := Grid.Canvas.TextWidth(SL[i]);
if CurrWidth > MaxWidth then
MaxWidth := CurrWidth;
// Populates first column in stringgrid.
Grid.RowCount := Grid.RowCount + 1;
Grid.Cells[0, Grid.RowCount - 1] := SL[i];
end;
Grid.ColWidths[0] := MaxWidth + Padding;
end;
finally
SL.Free;
end;
end;


请注意,此代码要求该路径在文件夹名称后包含尾随反斜杠。您可以轻松地对其进行修改,以在需要时自动添加它,或者接受文件夹名称和文件掩码以仅包含某些文件。

关于delphi - 使用delphi在字符串网格中列出目录中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11489680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com