Проверка на наличие файлов с помощью 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,

Другие вопросы по тегам