PDA

Ver la Versión Completa : TZipFile en Builder XE3


Angel.Matilla
09-04-2015, 11:11:29
A partir del código que hay en Clase TZipFile, para comprimir y descomprimir archivos (http://www.clubdelphi.com/foros/showthread.php?t=81218) he probado a adaptarlo para Builder. Me ha quedado esto:
TZipFile *fZip = new TZipFile();
fZip->Open(Entorno->Strings[2] + "\\CopiaZip.zip", zmWrite);

FileList->Items->Clear();
FileList->Mask = "C:\\DatAfi21\\Tablas\\*.*";

for (int nItem = 0; nItem < FileList->Items->Count; nItem ++)
fZip->Add(Entorno->Strings[2] + "\\" + FileList->Items->Strings[nItem], FileList->Items->Strings[nItem], zcDeflate);

fZip->Close();
fZip->Free();Quiero hacer una copia de una carpeta que tiene un total de 87 archivos (tablas Paradox e índices) como paso previo a una conversión de tablas. Empieza bien, pero cuando llega por el octavo o noveno fichero me da este error:
http://i98.photobucket.com/albums/l251/Angel_Matilla/Error1_zpsa0g1lwur.jpg
Nunca repite el sitio y en ningún momento cierro el fichero de destino. He probado dos variaciones de ese código:
for (int nItem = 0; nItem < FileList->Items->Count; nItem ++)
{
fZip->Open(Entorno->Strings[2] + "\\CopiaZip.zip", zmWrite);
fZip->Add(Entorno->Strings[2] + "\\" + FileList->Items->Strings[nItem], FileList->Items->Strings[nItem], zcDeflate);
fZip->Close();
}En este caso se ejecuta sin error, me aparece un fichero comprimido que por tamaño debería contener toda la carpeta pero si lo abro con WinRar sólo hay un fichero, el último de la carpeta.
for (int nItem = 0; nItem < FileList->Items->Count; nItem ++)
{
fZip->Open(Entorno->Strings[2] + "\\CopiaZip.zip", zmReadWrite);
fZip->Add(Entorno->Strings[2] + "\\" + FileList->Items->Strings[nItem], FileList->Items->Strings[nItem], zcDeflate);
fZip->Close();
}En este caso en el primer intento me da este mensaje:
http://i98.photobucket.com/albums/l251/Angel_Matilla/Error2_zpszf8yglpd.jpg