2012-06-16 22 views
7

मैंज़िप की जा रही एक फ़ोल्डर

TZipFile.ZipDirectoryContents() 

तो जैसा उपयोग करने के लिए कोशिश कर रहा हूँ:

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

मैं यह अधिकार पढ़ रहा हूँ, यह एक फ़ाइल का नाम टेस्ट में फ़ोल्डर "workingdir" की सामग्री को बचाने के लिए करना चाहिए .pcf।

अब जब मैं यह कर मैं त्रुटि ::

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

दो बातें मुझे भ्रमित मिलती है:

  1. इसमें कहा गया है कि यह नहीं कर सकते हैं फ़ाइल खोलने। अभी तक कोई test.pcf नहीं है। मैं उम्मीद कर रहा था कि यह इसे बनाएगा।

  2. यह कहता है कि फ़ाइल तक नहीं पहुंच सकता है। क्या ऐसा इसलिए है क्योंकि यह अभी तक नहीं बनाया गया है? क्या मैं इस समारोह का उपयोग कर रहा हूँ? यदि ऐसा है तो मैं एक फ़ोल्डर स्थान से एक ज़िप फ़ाइल कैसे बनाऊंगा?

+1

, मैं TZipFile के साथ familar नहीं कर रहा हूँ, लेकिन यह हो सकता है कि 'Test.PCF' के भीतर है:

प्रोग्राम के एक ज़िप फ़ाइल बनाने के लिए:

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

यह पंक्ति तो काम करेंगे निर्देशिका जिसे आप ज़िप करने का प्रयास कर रहे हैं? –

उत्तर

14

मैंने आपके कोड का परीक्षण किया और जैसा कि आपने बताया, वैसे ही यह विफल रहा।

मैंने फिर WinZip चलाकर मैन्युअल रूप से एक खाली ज़िप फ़ाइल बनाई।

फिर अपना कोड चलाया और यह ठीक हो गया।

ऐसा प्रतीत होता है कि ज़िप फ़ाइल को पहले से ही ZipDirectoryContents के लिए काम करना है। इसी तरह

TZipFile.ZipDirectoryContents('c:\myfolder\newzipfile.zip', WorkingDir); 
संबंधित मुद्दे