mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-27 20:33:49 +02:00
80 lines
1.5 KiB
ObjectPascal
80 lines
1.5 KiB
ObjectPascal
program fpzipper;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
uses
|
|
{$IFDEF UNIX}{$IFDEF UseCThreads}
|
|
cthreads,
|
|
{$ENDIF}{$ENDIF}
|
|
Classes, SysUtils, CustApp, zipper;
|
|
|
|
type
|
|
|
|
{ TFPZipApplication }
|
|
|
|
TFPZipApplication = class(TCustomApplication)
|
|
Private
|
|
FZipper: TZipper;
|
|
protected
|
|
procedure DoRun; override;
|
|
public
|
|
constructor Create(TheOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
procedure WriteHelp; virtual;
|
|
end;
|
|
|
|
{ TFPZipApplication }
|
|
|
|
procedure TFPZipApplication.DoRun;
|
|
|
|
Var
|
|
I : Integer;
|
|
F : TFileStream;
|
|
begin
|
|
If ParamCount<=1 then
|
|
begin
|
|
Writeln('Usage ',ParamStr(0),' zipfile file1 [file2 [...]]');
|
|
Terminate;
|
|
exit;
|
|
end;
|
|
FZipper.FileName:=ParamStr(1);
|
|
For I:=2 to ParamCount do
|
|
begin
|
|
F:=TFileStream.Create(ParamStr(i),fmOpenRead);
|
|
FZipper.Entries.AddFileEntry(F,ParamStr(i));
|
|
end;
|
|
FZipper.ZipAllFiles;
|
|
For I:=0 to FZipper.Entries.Count-1 do
|
|
FZipper.Entries[I].Stream.Free;
|
|
Terminate;
|
|
end;
|
|
|
|
constructor TFPZipApplication.Create(TheOwner: TComponent);
|
|
begin
|
|
inherited Create(TheOwner);
|
|
StopOnException:=True;
|
|
FZipper:=TZipper.Create;
|
|
end;
|
|
|
|
destructor TFPZipApplication.Destroy;
|
|
begin
|
|
FreeAndNil(FZipper);
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TFPZipApplication.WriteHelp;
|
|
begin
|
|
{ add your help code here }
|
|
writeln('Usage: ',ExeName,' -h');
|
|
end;
|
|
|
|
var
|
|
Application: TFPZipApplication;
|
|
begin
|
|
Application:=TFPZipApplication.Create(nil);
|
|
Application.Title:='Zip application';
|
|
Application.Run;
|
|
Application.Free;
|
|
end.
|
|
|