0

我正在尝试检查特定文件的 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 内容的第一个文件。是否有任何正确的方法可以在不关心订单的情况下搜索文件?谢谢。

4

1 回答 1

5

FindFile返回文件的索引。您描述的场景为 0 或 1。所以测试>0是错误的。如果目标文件是 ZIP 容器中的第一个文件,则其索引为0.

-1找不到文件时返回索引。所以替换>0<> - 1.

于 2017-01-22T20:44:11.053 回答