За приложение на iPhone Firemonkey съхранявам файлове (изображения) в папката „tmp“ и ги използвам в моето приложение. Искам да мога да изчистя кеша, като изтрия да речем всички „.jpg“ файлове при поискване, но изглежда не мога да ги съпоставя програмно в извикване FindFirst().
Използвам прост цикъл FindFirst() / FindNext() / FindClose() за изброяване (и изтриване) на съдържанието на папка.
Под Windows кодът работи перфектно. Същото приложение под iOS (iPhone) винаги връща стойност -1 (грешка) за извикването FindFirst() и SearchRec.Name е празно. Опитах да използвам различни шаблони на файлове, включително '.' без успех.
Знам, че файловете съществуват, защото мога да ги чета и пиша (под iOS и Windows) без грешка и съдържанието им е правилно. Проверката FileExists() също връща True.
Освен това, ако посоча шаблон на файл без заместващ знак, за да проверя за известен файл (което наистина не е смисълът на извикване FindFirst()), извикването никога не се връща (отново това е добре под прозорците)!
Някой имал ли е успех с това под iOS и може ли да предложи някакви мисли?
Благодаря,
РЕДАКТИРАНЕ: Кодов фрагмент според искането, който демонстрира проблема. Забележка: _sFolderName съдържа името на папката в кеша, което потвърдих, че определено е правилно.
function GetCacheFileList : string;
var
iResult: integer;
sr: TSearchRec;
sPath,
sTemp: string;
sFilename : TFilename;
begin
sTemp := '';
sFilename := _sFolderName + '*.jpg';
//
iResult := FindFirst(sFilename, faAnyFile, sr); // ALWAYS RETURNS -1 under iOS
while (iResult = 0) do
begin
sTemp := sTemp + sr.Name + sLineBreak;
iResult := FindNext(sr)
end; { while }
//
FindClose(sr);
Result := sTemp
end;