Einzelnen Beitrag anzeigen

Gerd01

Registriert seit: 18. Mär 2005
Ort: NRW
117 Beiträge
 
Delphi XE2 Professional
 
#1

Unzip mit der Shell32

  Alt 25. Mär 2014, 16:19
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?
  Mit Zitat antworten Zitat