如何列出Android中ListBox中的所有Dir文件

时间:2014-12-20 12:37:05

标签: android list delphi get

如何列出ListBox中的所有Dir文件? 我在Windows中尝试了这个代码并且它可以工作,但它在Android中不起作用。

procedure ListFileDir(Path: string; FileList: TStrings);
 var
  SR: TSearchRec;
    begin
       if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
      begin
      repeat
     if (SR.Attr <> faDirectory) then
  begin
    FileList.Add(SR.Name);
     end;
    until FindNext(SR) <> 0;
   FindClose(SR);
 end;
end;

  procedure TForm1.Button1Click(Sender: TObject);
begin
   ListFileDir('sdcard/1/', ListBox1.Items);
 end;

2 个答案:

答案 0 :(得分:3)

您的代码仅适用于Windows。对于跨平台开发,在处理文件和文件夹时应使用System.IOUtils

具体而言,TDirectory.GetFiles(Path)

uses
  System.Types,
  System.IOUtils;

procedure ListFileDir(Path: string; FileList: TStrings);
var
  Files: TStringDynArray;
  s: string;
begin
  FileList.Clear;
  Files := TDirectory.GetFiles(Path);
  for s in Files do
    FileList.Items.Add(s);
end;

答案 1 :(得分:0)

您的代码出于跨平台目的的问题不是您使用FindFirst和朋友(TDirectory.GetFiles只是对它们的一个薄包装),而是'*.*'构造 - 您只需使用'*'代替:

procedure ListFileDir(Path: string; FileList: TStrings);
const
  AllFilesMask = {$IFDEF MSWINDOWS}'*.*'{$ELSE}'*'{$ENDIF};
var
  SR: TSearchRec;
begin
  if FindFirst(Path + AllFilesMask, faAnyFile, SR) = 0 then
  try
    repeat
      if (SR.Attr <> faDirectory) then
      begin
        FileList.Add(SR.Name);
      end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
end;
相关问题