Когда начинал изучать дельфина, все просто и понятно =) Если нужны комменты, могу написать.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ComCtrls, jpeg, ExtCtrls, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
MainMenu1: TMainMenu;
Button2: TButton;
N1: TMenuItem;
N2: TMenuItem;
N5: TMenuItem;
CheckBox1: TCheckBox;
ProgressBar1: TProgressBar;
Edit3: TEdit;
Edit4: TEdit;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
XPManifest1: TXPManifest;
Label5: TLabel;
Label7: TLabel;
Label6: TLabel;
procedure N5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.N5Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
f:file of byte;
f2,f3:textfile;
i,k,n,k2,ll,l,th,g,razmer,peremen,keyl:integer;
b:byte;
s,key,keyp:string;
p,sum:real;
begin
g:=0;
key:=Edit3.Text ;
keyp:=Edit4.Text;
if (key=keyp)and (Key<>'') then begin
s:=Edit1.text;
if s<>'' then begin
key:=Edit3.Text ;
keyp:=Edit4.Text;
keyl:=length(key);
k:=length(s);
k2:=pos(s,'.');
Delete(s,k2,3);
s:=s+'.crpt';
AssignFile(f,Edit1.text);
AssignFile(f2,s );
Reset(f);
ReWrite(f2);
razmer:=FileSize(f);
ProgressBar1.Max:=razmer;
peremen:=1;
While not eof(f) do begin
if g=2147483646 then g:=0;
If peremen >= keyl then peremen:=1;
Read(f,b);
k:=ord(b);
th:= k xor ( (ord(key[peremen]) + g));
Write(f2,chr(th));
ProgressBar1.StepBy(1);
peremen:=peremen+1;
g:=g+1;
end;
Edit2.text:=s;
ShowMessage('Файл зашифрован');
ProgressBar1.Position:=0;
CloseFile(f);
CloseFile(f2);
if CheckBox1.Checked=true then Erase(f);
CheckBox1.Checked:=false;
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
OpenDialog1.FileName:='';
end;
end;
end;
procedure TForm1.N2Click(Sender: TObject);
var
s:string;
begin
OpenDialog1.Execute ;
s:=OpenDialog1.FileName ;
Edit1.Text:=s;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
SR:TSearchRec;
a:TfileStream;
q:byte;
s,s2,s3,key,keyp:string;
n,t,k,i,razmer,g,peremen,keyl:integer;
f3:textfile;
begin
g:=0;
s:=OpenDialog1.FileName ;
s2:=Copy(s,k-4,5);
if (s2<>'.crpt')and (s2<>'') then ShowMessage('Не является зашифрованным файлом!') else begin
key:=Edit3.Text ;
keyp:=Edit4.text;
if (key=keyp)and (key<>'') then begin
if s<>'' then begin
keyl:=length(key);
a:=TfileStream.Create(s,fmOpenRead);
s3:=s;
razmer:=a.Size;
ProgressBar1.Max:=razmer;
k:=length(s);
Delete(s,k-4,5);
s2:=s;
AssignFile(f3,s2);
ReWrite(f3);
peremen:=1;
for i:=1 to razmer do begin
if g=2147483646 then g:=0;
If peremen >= keyl then peremen:=1;
a.Read(q,1);
t:= q xor ( (ord(key[peremen]) +g));
a.Seek(0,1) ;
Write(f3,chr(t));
ProgressBar1.StepBy(1);
peremen:=peremen+1;
g:=g+1;
end;
CloseFile(f3);
FileClose(0);
a.Destroy;
Edit2.text:=s;
if CheckBox1.Checked=true then begin DeleteFile(OpenDialog1.FileName); end;
CheckBox1.Checked:=false;
ShowMessage('Файл расшифрован!');
ProgressBar1.Position:=0;
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
OpenDialog1.FileName;
end;
end;
end;
end;
end.
Подкорректирован код и ссылка на exe
Код:
http://depositfiles.com/files/2266774
|