fpunzipper.lpr 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. program fpzipper;
  2. {$mode objfpc}{$H+}
  3. uses
  4. {$IFDEF UNIX}{$IFDEF UseCThreads}
  5. cthreads,
  6. {$ENDIF}{$ENDIF}
  7. Classes, SysUtils, CustApp, zipper
  8. { you can add units after this };
  9. type
  10. { TFPUnZipApplication }
  11. TFPUnZipApplication = class(TCustomApplication)
  12. Private
  13. FUnZipper: TUnZipper;
  14. FFiles : TStrings;
  15. protected
  16. procedure DoRun; override;
  17. public
  18. constructor Create(TheOwner: TComponent); override;
  19. destructor Destroy; override;
  20. procedure WriteHelp; virtual;
  21. end;
  22. { TFPUnZipApplication }
  23. procedure TFPUnZipApplication.DoRun;
  24. Var
  25. I : Integer;
  26. F : TFileStream;
  27. begin
  28. If ParamCount<1 then
  29. begin
  30. Writeln('Usage ',ParamStr(0),' zipfile [file1 [file2 [...]]]');
  31. Terminate;
  32. exit;
  33. end;
  34. FUnZipper.FileName:=ParamStr(1);
  35. FUnZipper.UseUTF8:=True;
  36. FUnZipper.Examine;
  37. if ParamCount=1 then
  38. FUnZipper.UnZipAllFiles
  39. else
  40. For I:=2 to ParamCount do
  41. FFiles.Add(ParamStr(I));
  42. FUnZipper.UnZipFiles(FFiles);
  43. Terminate;
  44. end;
  45. constructor TFPUnZipApplication.Create(TheOwner: TComponent);
  46. begin
  47. inherited Create(TheOwner);
  48. StopOnException:=True;
  49. FUnZipper:=TUnZipper.Create;
  50. FFiles:=TStringList.Create;
  51. end;
  52. destructor TFPUnZipApplication.Destroy;
  53. begin
  54. FreeAndNil(FFiles);
  55. FreeAndNil(FUNZipper);
  56. inherited Destroy;
  57. end;
  58. procedure TFPUnZipApplication.WriteHelp;
  59. begin
  60. { add your help code here }
  61. writeln('Usage: ',ExeName,' -h');
  62. end;
  63. var
  64. Application: TFPUnZipApplication;
  65. begin
  66. Application:=TFPUnZipApplication.Create(nil);
  67. Application.Title:='UnZip application';
  68. Application.Run;
  69. Application.Free;
  70. end.