Es gibt eine elegante Mögichkeit mit der Shell32 ein Zipfile zu entpacken. Mein Quelltext hierfür ist dieser:
Delphi-Quellcode:
const
SHCONTCH_NOPROGRESSBOX = 4;
SHCONTCH_AUTORENAME = 8;
SHCONTCH_RESPONDYESTOALL = 16;
SHCONTF_INCLUDEHIDDEN = 128;
SHCONTF_FOLDERS = 32;
SHCONTF_NONFOLDERS = 64;
function ShellUnzip(zipfile, targetfolder: string; filter: string = '*.*'): boolean;
var
shellobj: olevariant;
srcfldr, destfldr: olevariant;
shellfldritems: olevariant;
FilterV,
ZipFileV, TargetFldrV: Variant;
begin
shellobj := CreateOleObject('Shell.Application');
/// 25.03.2014 17:07 -> Keine direkte Zuweisung von ZipFile an shellobj.NameSpace(...
ZipFileV := ZipFile;
srcfldr := shellobj.NameSpace(zipfileV);
/// 25.03.2014 17:07 -> dito
TargetFldrV := targetfolder;
destfldr := shellobj.NameSpace(TargetFldrV);
shellfldritems := srcfldr.Items;
/// 25.03.2014 17:07 -> dito
FilterV := Filter;
if (filter <> '') then
shellfldritems.Filter(SHCONTF_INCLUDEHIDDEN or SHCONTF_NONFOLDERS,filterV);
destfldr.CopyHere(shellfldritems,SHCONTCH_NOPROGRESSBOX or SHCONTCH_RESPONDYESTOALL);
end;
Nun aber mein Problem. Die zu entpackende files in der ZIP sind mit vollständigen Pfad gepackt. Wenn ich also die zip entpacke sind die entpackten Dateien nicht direkt im Zielordner sondern mit Pfad im Zielordner abgespeichert.
Gibt es eine Option oder Möglichkeit die Pfadangaben in den gepackten auszublenden, sodass ich die reinen Dateien im Zielordner habe?