Как показать доступные файлы в Android-памяти с помощью Firemonkey

В Delphi для Windows есть TOpenDialog и такие команды, как FindFirst . В Firemonky / Android нет TOpenDialog , but according to many forums FindFirst` должен существовать. Однако есть еще те, у кого проблемы с этим, но нет решения:

В Windows следующие функции:

 var iResult,n:integer; Filenaam,s:string; sr: TSearchRec; begin with form1 do begin 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; begin form1.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; 
Intereting Posts
Как показать уведомление по Android после каждых 48 часов? Компилятор кинжала с дуплексной копией Назначение печати Android Call для приложения HP e-print вызывает RuntimeException: невозможно запустить активность Android – LocationManager vs FusedLocation Как установить переключатель в Android Есть ли способ во время выполнения указать, на каком уровне API работает Android-устройство? Appcelerator Titanium performance Вычислить потребляемую мощность Android-датчика Загрузка изображения параллельно на сервере S3 Настройка значка пользовательского общего ресурса на панели действий ShareActionProvider без ActionBarSherlock Щелчок по счетчику в всплывающем окне вызывает WindowManager $ BadTokenException Android VideoView на прозрачной деятельности Почему TabListener устарел? Ошибка получения родительского элемента: не найден ресурс, который соответствует указанному имени «@android: style / Theme.AppCompat.Light.DarkActionBar» Изменение расстояния между линиями EditText и позиция курсора по строке