Einzelnen Beitrag anzeigen

Gerd01

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

AW: Unzip mit der Shell32

  Alt 28. Mär 2014, 10:25
Für den, den es interssiert, hier nochmal der Code mit der Übergabe der entpackten Dateiliste incl. Verzeichnisangabe:

Code:
const
  SHCONTCH_NOPROGRESSBOX = 4;
  SHCONTCH_AUTORENAME = 8;
  SHCONTCH_RESPONDYESTOALL = 16;
  SHCONTF_INCLUDEHIDDEN = 128;
  SHCONTF_FOLDERS = 32;
  SHCONTF_NONFOLDERS = 64;

function ShellUnzip(zipfile, targetfolder: string; FileList : TStringList; Const filter: string = ''): boolean;
var
  shellobj: olevariant;
  srcfldr, destfldr: olevariant;
  shellfldritems: olevariant;
  FilterV,
  ZipFileV, TargetFldrV: OleVariant;
  I:Integer;
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
  ForceDirectories(PChar(targetfolder));
  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);

  if Assigned(FileList) then
  Begin
    FileList.Clear;
    for I := 0 to shellfldritems.Count -1 do
      FileList.Add(shellfldritems.item(I).path);
  end;
end;
  Mit Zitat antworten Zitat