Проверка на наличие файлов с помощью Abbrevia в Delphi 10.1
Я пытаюсь проверить содержимое zip-файла (перетаскивание) для определенного файла, и я использую метод, как показано ниже;
procedure TForm1.DropTarget1Dropped(Sender: TObject; const Data: TDragObject;
const Point: TPointF);
var i:Integer;
begin
AbZipKit1.FileName := Data.Files[0];
if AbZipKit1.FindFile('readme.txt')>0 then showmessage(‘exists’) else
begin
showmessage(‘non-exists’);
end;
end;
Для этого я создал 2 zip-файла и добавил два txt-файла (readme.txt и test.txt) в оба. Но к первому файлу: сначала я добавил файл "readme.txt", а не "test.txt". Ко второму я добавил "test.txt", а не "readme.txt". Я имею в виду, что я изменил порядок добавления файлов.
После удаления первого файла программа показывает сообщение как "существует", но для второго файла "не существует". Я думаю, что метод FindFile ищет только первый файл содержимого zip. Есть ли правильный способ поиска файла, не заботясь о порядке? Благодарю.
1 ответ
FindFile
возвращает индекс файла. 0 или 1 для сценария, который вы описываете. Итак, тестирование >0
неправильно. Если целевой файл является первым в контейнере ZIP, то его индекс 0
,
Индекс -1
возвращается, когда файл не найден. Так замени >0
с <> - 1
,