Sample code for 30+ languages & platforms
Lazarus Pascal

Zip Files in a Date Range

See more Zip Examples

Demonstrates how to use the Zip.MinDate and Zip.MaxDate properties to zip only those files with a last-modified date within a date range.

Note: This example requires Chilkat v10.0.0 or greater.

Chilkat Lazarus Pascal Downloads

Lazarus Pascal
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.Zip;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  zip: TZip;
  zipPath: string;
  recurse: Boolean;

begin
  success := False;

  //  This example requires the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  zip := TZip.Create;

  zipPath := 'c:/temp/qa_output/out.zip';

  //  Initialize the zip object with the path of the .zip to be created.
  zip.NewZip(zipPath);

  //  The MinDate and MaxDate properties use the timestamp date/time string format.
  //  Here are some examples:
  //  YYYY-MM-DD (e.g., 2024-07-31)
  //  YYYY-MM-DDTHH:MM:SS�HH:MM (e.g., 2024-07-31T12:34:56+02:00)
  //  2024-07-31T12:34:56Z (the "Z" denotes Zulu time, or UTC)

  //  Only append files having a last-modified date greater than 1-Jan-2017
  zip.MinDate := '2017-01-01T00:00:00Z';

  //  Also, only append files having a last-modified date less than the end of 2020
  zip.MaxDate := '2020-12-31T23:59:59Z';

  //  You don't need to specify both MinDate and MaxDate.
  //  You can specify only one or the other if needed.

  //  The MinDate/MaxDate properties apply to all of the Chilkat methods for appending files.

  //  Recursively append to the zip object the paths of the files and directories in a directory tree.
  //  At this point we are not creating the .zip, nor are we reading the contents of the files.
  //  We are simply appending references to the files and directories in the local filesystem
  //  that will get processed when WriteZip is called.
  recurse := True;
  success := zip.AppendFiles('c:/temp/files_to_zip',recurse);
  if (success = False) then
    begin
      WriteLn(zip.LastErrorText);
      Exit;
    end;

  zip.FileName := zipPath;
  success := zip.WriteZip();
  if (success = False) then
    begin
      WriteLn(zip.LastErrorText);
      Exit;
    end;

  zip.CloseZip();

  WriteLn('Success');


  zip.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.