mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-11 15:08:06 +02:00
85 lines
1.6 KiB
ObjectPascal
85 lines
1.6 KiB
ObjectPascal
program fpzipper;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
uses
|
|
{$IFDEF UNIX}{$IFDEF UseCThreads}
|
|
cthreads,
|
|
{$ENDIF}{$ENDIF}
|
|
Classes, SysUtils, CustApp, zipper
|
|
{ you can add units after this };
|
|
|
|
type
|
|
|
|
{ TFPUnZipApplication }
|
|
|
|
TFPUnZipApplication = class(TCustomApplication)
|
|
Private
|
|
FUnZipper: TUnZipper;
|
|
FFiles : TStrings;
|
|
protected
|
|
procedure DoRun; override;
|
|
public
|
|
constructor Create(TheOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
procedure WriteHelp; virtual;
|
|
end;
|
|
|
|
{ TFPUnZipApplication }
|
|
|
|
procedure TFPUnZipApplication.DoRun;
|
|
|
|
Var
|
|
I : Integer;
|
|
F : TFileStream;
|
|
|
|
begin
|
|
If ParamCount<1 then
|
|
begin
|
|
Writeln('Usage ',ParamStr(0),' zipfile [file1 [file2 [...]]]');
|
|
Terminate;
|
|
exit;
|
|
end;
|
|
FUnZipper.FileName:=ParamStr(1);
|
|
FUnZipper.UseUTF8:=True;
|
|
FUnZipper.Examine;
|
|
if ParamCount=1 then
|
|
FUnZipper.UnZipAllFiles
|
|
else
|
|
For I:=2 to ParamCount do
|
|
FFiles.Add(ParamStr(I));
|
|
FUnZipper.UnZipFiles(FFiles);
|
|
Terminate;
|
|
end;
|
|
|
|
constructor TFPUnZipApplication.Create(TheOwner: TComponent);
|
|
begin
|
|
inherited Create(TheOwner);
|
|
StopOnException:=True;
|
|
FUnZipper:=TUnZipper.Create;
|
|
FFiles:=TStringList.Create;
|
|
end;
|
|
|
|
destructor TFPUnZipApplication.Destroy;
|
|
begin
|
|
FreeAndNil(FFiles);
|
|
FreeAndNil(FUNZipper);
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TFPUnZipApplication.WriteHelp;
|
|
begin
|
|
{ add your help code here }
|
|
writeln('Usage: ',ExeName,' -h');
|
|
end;
|
|
|
|
var
|
|
Application: TFPUnZipApplication;
|
|
begin
|
|
Application:=TFPUnZipApplication.Create(nil);
|
|
Application.Title:='UnZip application';
|
|
Application.Run;
|
|
Application.Free;
|
|
end.
|
|
|