2012-06-16 14 views
7

Próbuję użyćZipping folder

TZipFile.ZipDirectoryContents() 

tak:

TZipFile.ZipDirectoryContents('Test.PCF', WorkingDir); 

Jeśli czytam tego prawa, należy go zapisać zawartość folderu „WorkingDir” do pliku o nazwie test .pcf.

Teraz, kiedy mogę to zrobić ja się błąd ::

Raised exception class EFOpenError with message Cannot open file 
...test.pcf. The process cannot access the file because its being used by another process." 

dwie rzeczy mylić mnie:

  1. on mówi, że nie może otworzyć pliku. Nie ma jeszcze test.pcf. Miałem nadzieję, że to się uda.

  2. Mówi, że nie ma dostępu do pliku. Czy to dlatego, że nie jest jeszcze stworzony? Czy używam tej funkcji? Jeśli tak, to w jaki sposób utworzyć plik zip z lokalizacji folderu?

+1

Podobnie, nie jestem obeznanym z TZipFile ale może się okazać, że „Test.PCF” jest w zasięgu katalog, który próbujesz rozpakować? –

Odpowiedz

14

Przetestowałem Twój kod i nie powiodło się w taki sam sposób, jak zgłoszono.

Następnie ręcznie utworzyłem pusty plik zip, uruchamiając program WinZip.

Następnie uruchomił twój kod i działał poprawnie.

Wygląda na to, że plik ZIP musi już istnieć, aby ZipDirectoryContents działało.

Aby utworzyć plik zip programowo:

myZipFile := TZIpFile.Create; 
    myZipFile.Open('c:\myfolder\newzipfile.zip', TZipMode.zmWrite); 
    myZipFile.Close; 
    myZipFile.Free; 

Linia ta będzie następnie działać:

TZipFile.ZipDirectoryContents('c:\myfolder\newzipfile.zip', WorkingDir);