OK napisałem ci za pomocą komponentu SevenZip malutki program do pakowania danych z Memo do określonej ścieżki o określonym czasie pod hasło z definiowaną nazwą pliku przez usera. :)
Też niedawno miałem problem z doborem odpowiedniego komponentu. Zostało mi jeszcze znalezienie dobrego darmowego komponentu do wypalania płyt CD/DVD.
Program:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SevenZipVCL, StdCtrls, JvDialogs, ExtCtrls;
type
TForm1 = class(TForm)
open: TJvOpenDialog;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
zip: TSevenZip;
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
Timer1: TTimer;
Label3: TLabel;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ KOMPONENTY
zip - Sevenzip1
open - JvOpendialog1
}
//załaduj plik do memo z opendialoga
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Clear;
if open.Execute = true then //w opendialog ustaw AllowMultiSelect na True
memo1.Lines.Add(open.Files.Text);
end;
//spakuj dane z Memo
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
zip.SZFileName := Edit2.Text; //podaj sciezke z nazwa nowego pliku zip
for i:=0 to memo1.Lines.Count-1 do
zip.Files.AddString(memo1.Lines[i]);
If Edit1.Text <> '' then zip.Password := Edit1.Text; //podaj haslo (opcjonalnie)
i:=zip.Add;
end;
//spakuj dane o okreslonej godzinie w Edit
procedure TForm1.Timer1Timer(Sender: TObject);
begin
label3.Caption:=FormatDateTime('hh:mm:ss',Now);
if Edit3.Text=Label3.Caption then Button2.Click;//pakuje dane o okreslonej w Edit godzinie
end;
end.
Działa super. Dla zainteresowanych polecam sobie napisać jeszcze ekstrakt pliku ZIP (rozpakowywanie). Można jeszcze dorobić Progressbary i inne wodotryski. :)
Komponent SevenZip do ściągnięcia tutaj http://www.torry.net/quicksearchd.php?String=sevenzip&Title=Yes
Miłej zabawy.