2017-01-22 3 views
0

Я пытаюсь проверить содержимое файла zip (перетаскивание) для определенного файла, и я использую метод, как показано ниже;Проверка наличия файлов с помощью Abbrevia в Delphi 10.1

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 почтовые файлы и в обоих добавлены две текстовые файлы (readme.txt и test.txt). Но для первого файла: я добавил файл «readme.txt» сначала, чем «test.txt». Для второго я добавил «test.txt», чем «readme.txt». Я имею в виду, что я изменил порядок добавления файла.

После удаления первого файла программа показывает сообщение как «существует», но для второго файла «не существует». Я думаю, что метод FindFile ищет только первый файл zip-содержимого. Есть ли правильный способ поиска файла без заботы о заказе? Спасибо.

ответ

5

FindFile возвращает индекс файла. Либо 0 или 1 для описываемого вами сценария. Поэтому тестирование >0 неверно. Если целевой файл является первым в контейнере ZIP, то его индекс равен 0.

Индекс -1 возвращается, когда файл не найден. Поэтому замените >0 на <> - 1.

+1

Огромное спасибо .. Вы сохранили мой день .. – Alper

+2

Приятно видеть, что Дэвид сохранил ваш день, это то, что всегда делает david :) – Sami

+3

Немного отладки тоже помогли бы, но, похоже, многим разработчикам не хватает этого навыка В наше время... – whosrdaddy