Versuch mal dieses:
Delphi-Quellcode:
Function ShellUnzip(Zipfile, Targetfolder: WideString;
...
begin
Shellobj:=CreateOleObject('Shell.Application');
if not Assigned(Shellobj) then RaiseLastOSError;
SrcFldr:= Shellobj.NameSpace(Zipfile);
if not Assigned(SrcFldr) then RaiseLastOSError;
DestFldr:=Shellobj.NameSpace(TargetFolder);
if not Assigned(DestFldr) then RaiseLastOSError;
...
Zitat:
ShellFldrItems:=SrcFldr.Items;
Wenn SrcFldr hier NIL ist, dann bedeutet das Shellobj.NameSpace(Zipfile) hat nix zurückgeliefert und da in diesen Codes nirgendwo eventuelle Fehler abgefangen werden, muß es ja irgendwo auch mal heftig knallen.
Ein Therapeut entspricht 1024 Gigapeut.