我想将所选文件夹中的文件添加到memobox或字符串列表中并显示结果。在这两种方式中,我都可以添加它们,但我无法在备忘录中显示文件夹中的文件,也无法在ShowMessage
- 对话框中显示字符串列表中的文件。
function CountFilesInFolder(AFolder: String; AMask: String): Integer;
var
tmp1: TSearchRec;
ergebnis: Integer;
memo1: string;
list : TStringList;
begin
result := 0;
if (AFolder <> '') then
begin
if AFolder[length(AFolder)] <> '\' then AFolder := AFolder + '\';
ergebnis := FindFirst(AFolder + AMask, faArchive + faReadOnly + faHidden + faSysFile, tmp1);
while ergebnis = 0 do
begin
Inc(result);
ergebnis := FindNext(tmp1);
while ((tmp1.Name = '|*_tif.tif')) and (ergebnis <> 0) do
ergebnis := FindNext(tmp1);
end;
list.Add(tmp1.Name);
FindClose(tmp1);
end;
end;
谢谢你的时间,抱歉我的英语不好。
答案 0 :(得分:1)
像这样的低级功能不应该直接将项添加到备忘录中。而是将TStrings
(字符串列表的抽象)传递给函数并填充它:
function CountFilesInFolder(AFolder: String; AMask: String; FileNames: TStrings): Integer;
begin
// do your file enumeration
// for each file call FileNames.Add(FileName);
end;
由于备忘录的Lines
属性也属于TStrings
类型,因此您可以直接使用它:
CountFilesInFolder('D:\', '*.TXT', Memo1.Lines);
如果你想在字符串列表中包含文件名,通常的模式是这样的:
FileNames := TStringList.Create;
try
CountFilesInFolder('D:\', '*.TXT', FileNames);
finally
FileNames.Free;
end;
重要的是,调用者创建并销毁传递给TStringList
的{{1}} - 这是Delphi中的一个重要原则。