我试图检查一个特定文件的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方法只搜索压缩内容的第一个文件。是否有任何正确的方式来搜索一个文件,而不关心订单?谢谢。
发布于 2017-01-22 20:44:11
FindFile返回文件的索引。对于您描述的场景,无论是0还是1。所以测试>0是错误的。如果目标文件是ZIP容器中的第一个文件,那么它的索引是0。
当找不到文件时,返回-1的索引。所以将>0替换为<> - 1。
https://stackoverflow.com/questions/41795842
复制相似问题