Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.31 KB | None | 0 0
  1. unit createsevenzipf;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, ComCtrls, StdCtrls, FileCtrl, ipzcore, ipzzip, ipzsevenzip;
  8.  
  9. type
  10.   TFormCreatesevenzip = class(TForm)
  11.     Label1: TLabel;
  12.     btnOpenFolder: TButton;
  13.     label2: TLabel;
  14.     lstLocalFiles: TListView;
  15.     Label3: TLabel;
  16.     txtArchiveFile: TEdit;
  17.     btnSaveFile: TButton;
  18.     txtPassword: TEdit;
  19.     Label4: TLabel;
  20.     btnZip: TButton;
  21.     ProgressBar1: TProgressBar;
  22.     SaveDialog1: TSaveDialog;
  23.     lblDirectory: TLabel;
  24.     SevenZip1: TipzSevenZip;
  25.     procedure btnOpenFolderClick(Sender: TObject);
  26.     procedure btnSaveFileClick(Sender: TObject);
  27.     procedure btnZipClick(Sender: TObject);
  28.     procedure FormCreate(Sender: TObject);
  29.     procedure SevenZip1Progress(Sender: TObject; Data: string;
  30.       const Filename: string; BytesProcessed: Int64; PercentProcessed: Integer);
  31.   private
  32.     { Private declarations }
  33.     procedure UpdateLocal;
  34.   public
  35.     { Public declarations }
  36.     MemStream: TMemoryStream;
  37.   end;
  38.  
  39. var
  40.   FormCreatesevenzip: TFormCreatesevenzip;
  41.  
  42. implementation
  43.  
  44. {$R *.dfm}
  45.  
  46. procedure TFormCreatesevenzip.btnOpenFolderClick(Sender: TObject);
  47. var
  48. DirSelected: UnicodeString;
  49. options: TSelectDirOpts;
  50. begin
  51.         if SelectDirectory(DirSelected, options, 0) then
  52.         begin
  53.                 ChDir(DirSelected);
  54.                 lblDirectory.Caption := DirSelected;
  55.                 UpdateLocal;
  56.         end;
  57. end;
  58.  
  59. procedure TFormCreatesevenzip.UpdateLocal;
  60. var
  61.    SearchRec: TSearchRec;
  62. begin
  63.    Screen.Cursor := crAppStart;
  64.    lstLocalFiles.Clear;
  65.  
  66.    if FindFirst('*', faAnyFile, SearchRec) = 0 then
  67.    repeat
  68.       lstLocalFiles.Items.Add();
  69.       if (SearchRec.Attr and faDirectory) <> 0 then
  70.          lstLocalFiles.Items[lstLocalFiles.Items.Count - 1].Caption := '<DIR>  ' + SearchRec.Name
  71.       else
  72.          lstLocalFiles.Items[lstLocalFiles.Items.Count - 1].Caption := SearchRec.Name;
  73.  
  74.       lstLocalFiles.Items[lstLocalFiles.Items.Count - 1].SubItems.Add(IntToStr(SearchRec.Size));
  75.  
  76.       lstLocalFiles.Items[lstLocalFiles.Items.Count - 1].SubItems.Add(DateTimeToStr(FileDateToDateTime(SearchRec.Time)));
  77.    until FindNext(SearchRec) <> 0;
  78.  
  79.    FindClose(SearchRec);
  80.    Screen.Cursor := crDefault;
  81. end;
  82.  
  83. procedure TFormCreatesevenzip.btnSaveFileClick(Sender: TObject);
  84. begin
  85.   SaveDialog1.Title := 'Save your 7z file.';
  86.   SaveDialog1.Filter := 'SevenZip Files (*.7z)|*.7z';
  87.   SaveDialog1.FileName := txtArchiveFile.Text;
  88.   if SaveDialog1.Execute then
  89.   begin
  90.      txtArchiveFile.Text := SaveDialog1.FileName;
  91.   end;
  92. end;
  93.  
  94. procedure TFormCreatesevenzip.btnZipClick(Sender: TObject);
  95. var
  96. curListItem : TListItem;
  97. begin
  98.   try
  99.     SevenZip1.Reset;
  100.     ProgressBar1.Position := 0;
  101.     SevenZip1.ArchiveFile :=  txtArchiveFile.Text;
  102.  
  103.     curListItem := lstLocalFiles.Selected;
  104.     if Assigned(curListItem) then
  105.     begin
  106.         while Assigned(curListItem) do
  107.         begin
  108.                 SevenZip1.IncludeFiles(lblDirectory.Caption + '\' + curListItem.Caption);
  109.                 curListItem := lstLocalFiles.GetNextItem(curListItem,sdAll,[isSelected]);
  110.         end;
  111.     end;
  112.  
  113.     //You can also add files to an archive using a filemask for instance:
  114.     //SevenZip1.IncludeFiles('c:\*.txt');
  115.  
  116.     if not(txtPassword.Text = '') then
  117.     begin
  118.         SevenZip1.Password := txtPassword.Text;
  119.  
  120.     end;
  121.  
  122.      MemStream:= TMemoryStream.Create;
  123.  
  124.     SevenZip1.Config('WriteToProgressEvent=true');
  125.     SevenZip1.Compress;
  126.  
  127.     ShowMessage('SevenZip complete.');
  128.  
  129.      MemStream.Position := 0;
  130.      MemStream.SaveToFile(txtArchiveFile.Text + '.7z' );
  131.       MemStream.Free;
  132.   except on E: EipzZip do
  133.     ShowMessage(E.Message);
  134.   end;
  135.  
  136.     SevenZip1.ArchiveFile := ''; //Release the handle on the archive file.
  137. end;
  138.  
  139. procedure TFormCreatesevenzip.FormCreate(Sender: TObject);
  140. begin
  141.  lblDirectory.Caption := GetCurrentDir;
  142.  ChDir(GetCurrentDir);
  143.  UpdateLocal;
  144. end;
  145.  
  146. procedure TFormCreatesevenzip.SevenZip1Progress(Sender: TObject; Data: string;
  147.   const Filename: string; BytesProcessed: Int64; PercentProcessed: Integer);
  148. begin
  149.  
  150.      MemStream.Write( Data, Length(Data) );
  151.    //  MemStream.Write( PAnsiChar( Data ), Length(Data) );  the same shit
  152.  
  153.      ProgressBar1.Position := PercentProcessed;
  154. end;
  155.  
  156. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement