在Delphi for Windows中,有一个包含topenDialog和FindFirst等命令.
在Firemonky / Android中没有topenDialog,但根据许多forumsFindFirst`应该存在.然而,有更多的人有问题,但没有解决方案:
在windows中,以下功能正常:
var iResult,n:integer;filenaam,s:string;sr: TSearchRec;beginwith form1 dobegin L_toonactIE.Text:='start file List'; M_fileList.lines.Clear; filenaam:= System.IoUtils.tpath.GetdocumentsPath+'\assets\internal\'+'*.*'; iResult:=FindFirst(filenaam,faAnyfile,sr); str(iresult,s);L_toonactIE.Text:='started '+s; n:=0; while (iResult=0) do begin inc(n); L_toonactIE.Text:='busy file List'; s:=s+sr.name+slineBreak; M_fileList.lines.add(sr.name); iResult:=FindNext(sr); end; FindClose(sr); // str(n,s);if n=0 then L_toonactIE.Text:='nothing found' else L_toonactIE.Text:='ready file List ('+s+'found)'
结束;}
iResult总是-1
另一个解决方案是:
procedure toon_files2(pathSTRING:string); var {$IFDEF FPC} patharray : NSArray; filename,path,ext,subdir:Nsstring ; fileManager: NSfileManager ; direnum:NSEnumerator;//NSDirectoryEnumerator ;//NSDirectoryEnumerator; //direnum:NSDirectoryEnumerator ;//NSDirectoryEnumerator; i,n:integer; error:NSError; {$ENDIF} k:integer;beginform1.L_toonactIE.Text:='start file List';{$IFDEF FPC}path:= NsstR(PChar(pathSTRING)); // =NSHomeDirectory();//fileManager:= NSfileManager.defaultManager;patharray:= fileManager.contentsOfDirectoryAtPath_error(path,@error);n:=0;k:=0;direnum:= patharray.objectEnumerator ;repeat inc(k); filename:=direnum.nextObject; if string(filename.UTF8STRING)<>'' then begin ext:= filename.pathExtension; if UpperCase(string(ext.UTF8STRING))='KPF' then begin form1.L_toonactIE.Text:='found a file'; SetLength(pngList,n+1); pngList[n]:=string(Path.UTF8STRING)+string(filename.UTF8STRING); form1.memo1.lines.Add(pngList[n]) ; inc(n); end; end;until string(filename.UTF8STRING)='';{$ENDIF}if k=0 then form1.L_toonactIE.Text:='nothing found' else form1.L_toonactIE.Text:='ready file List';end;
但也不起作用.
解决方法:
IoUtils中提供的功能就是您所需要的.此代码(在我的Nexus 7上测试)使用您文件夹中的文件填充TMemo(如果有的话):
uses IoUtils;procedure TheaderfooterForm.Speedbutton1Click(Sender: TObject);var DirList: TStringDynArray; DirPath: string; s: string;begin DirPath := TPath.Combine(TPath.GetdocumentsPath, 'assets'); DirPath := TPath.Combine(DirPath, 'internal'); // display where we're looking for the files Memo1.lines.Add('Searching ' + DirPath); if TDirectory.Exists(DirPath, True) then begin // Get all files. Non-windows systems don't typically care about // extensions, so we just use a single '*' as a mask. DirList := TDirectory.Getfiles(DirPath, '*'); // If none found, show that in memo if Length(DirList) = 0 then Memo1.lines.Add('No files found in ' + DirPath) else // files found. List them. begin for s in DirList do Memo1.lines.Add(s); end; end else Memo1.lines.Add('Directory ' + DirPath + ' does not exist.');end;
总结 以上是内存溢出为你收集整理的如何使用Firemonkey在Android内存中显示可用文件全部内容,希望文章能够帮你解决如何使用Firemonkey在Android内存中显示可用文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)