我正在尝试将扩展名为.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');
答案 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);