将文件加载到ListBox中

时间:2015-05-13 03:44:03

标签: android delphi firemonkey delphi-xe7

我正在尝试将扩展名为.csv的文件加载到ListBox中,但我的代码不能在Android平台上运行。代码有什么问题?

procedure LoadFileList(aFiles: TStringList; sPath: string; sMask: string = '*.*');
var
iIndex: integer;
SearchRec: TSearchRec;
begin
  if sPath[Length(sPath)] <> '\' then
     sPath := sPath + '\';

     iIndex := FindFirst(sPath+sMask, faArchive, SearchRec);

     while iIndex = 0 do begin
           aFiles.Add(SearchRec.Name);
           iIndex := FindNext(SearchRec);
     end;

     FindClose(SearchRec);
end;

用法:

LoadFileList(TStringList(ListBox1.Items), TPath.GetSharedDocumentsPath, '*.csv');

2 个答案:

答案 0 :(得分:1)

因为您使用的是XE7,所以您可以访问IOUtils。然后,这将为您解决问题:

uses
  IOUtils;

procedure LoadFileList(aFiles: TStrings; sPath: string; sMask: string = '*.*');
var
  aFile: string;
begin
  aFiles.Clear;
  for aFile in TDirectory.GetFiles(IncludeTrailingPathDelimiter(sPath), sMask) do
    aFiles.Add(aFile)
end;

答案 1 :(得分:0)

&#34;不起作用&#34;是一个非常不清楚的描述,但&#39; \&#39;看起来很可疑。 Linux使用&#39; /&#39;代替。基于适用于Android / iOS的Delphi,字符串也为零。

而不是

  if sPath[Length(sPath)] <> '\' then
     sPath := sPath + '\';

使用平台独立版本:

  sPath := IncludeTrailingPathDelimiter(sPath);