Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Replace/Update a FIle in a .zip
See more Zip Examples
Demonstrates how to replace/update a file from a .zip. Note: This requires the entire .zip to be rewritten.Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.ZipEntry,
Chilkat.Zip;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
zip: TZip;
charset: string;
zip2: TZip;
entry: TZipEntry;
begin
success := False;
// This requires the Chilkat Zip API to have been previously unlocked.
// See Unlock Chilkat Zip for sample code.
// First prepare a .zip and write it..
zip := TZip.Create;
zip.NewZip('qa_output/abc.zip');
// Add some files..
charset := 'utf-8';
zip.AddString('a.txt','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',charset);
zip.AddString('b.txt','bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',charset);
zip.AddString('c.txt','cccccccccccccccccccccccccccccccccccc',charset);
// Write to qa_output/abc.zip
// This .zip contains three files: a.txt, b.txt, and c.txt
success := zip.WriteZipAndClose();
// -------------------------------------------------------------------
// Open abc.zip, replace the content of the "b.txt" entry with something else, and re-write.
zip2 := TZip.Create;
zip2.OpenZip('qa_output/abc.zip');
entry := TZipEntry.Create;
if (zip2.EntryOf('b.txt',entry) = True) then
begin
entry.ReplaceString('This is the new content. bbbbbbbbbbbbbbbbbbbbbb','utf-8');
end;
// Write the modified .zip back to "abc.zip"
success := zip2.WriteZipAndClose();
WriteLn('success.');
zip.Free;
zip2.Free;
entry.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.