Для приложения 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;