end;
procedure TOptionsForm.BitBtn1Click(Sender: TObject);
var i: integer;
begin
UsedMethodsBox.Clear;
for i:=1 to QolMethods do
UsedMethodsBox.Items.Add(Methods[i].MethodName);
Used[i]:=true;
EnableKeys(True);
procedure TOptionsForm.UsedMethodsBoxClick(Sender: TObject);
var
i: integer;
If (UsedMethodsBox.ItemIndex=-1)or
(UsedMethodsBox.Items.Count=0) then
EnableKeys(False);
DescMemo.Clear;
Exit;
end else
i:=MethodIndex(UsedMethodsBox.Items.Strings[UsedMethodsBox.ItemIndex]);
if i=0 then exit;
DirectionGroup.ItemIndex:=UsedMethods[i].Direction-1;
KeyEdit.MaxLength:=Methods[i].KeyMaxLength;
KeyEdit.Text:=String(UsedMethods[i].Key);
WayCountEdit.Value:=UsedMethods[i].WayCount;
DescMemo.Lines.Append(Methods[i].MethodDescription);
procedure TOptionsForm.DirectionGroupExit(Sender: TObject);
(UsedMethodsBox.Items.Count=0) then Exit;
UsedMethods[i].Direction:=DirectionGroup.ItemIndex+1;
procedure TOptionsForm.KeyEditExit(Sender: TObject);
StrPCopy(UsedMethods[i].Key,KeyEdit.Text);
procedure TOptionsForm.WayCountEditExit(Sender: TObject);
UsedMethods[i].WayCount:=WayCountEdit.Value;
procedure TOptionsForm.FormClose(Sender: TObject;
var Action: TCloseAction);
Action:=caHide;
if Used[i] then
if StrLen(UsedMethods[i].Key)<Methods[i].KeyMinLength then
ShowMessage(Methods[i].MethodName+': '+Methods[i].KeyMinMessage);
Action:=caNone;
if StrLen(UsedMethods[i].Key)>Methods[i].KeyMaxLength then
ShowMessage(Methods[i].MethodName+': '+Methods[i].KeyMaxMessage);
end.
unit ProgressUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls;
type
TProgressForm = class(TForm)
Label1: TLabel;
PBOne: TProgressBar;
PBAll: TProgressBar;
Label2: TLabel;
private
{ Private declarations }
public
Current: integer;
procedure UpdateProgress(fn: String;perc:integer;Cap:String);
procedure InitProgress(qol:integer;Cap:String);
procedure EndProcess;
{ Public declarations }
ProgressForm: TProgressForm;
implementation
{$R *.DFM}
procedure TProgressForm.EndProcess;
inc(current);
procedure TProgressForm.UpdateProgress;
ProgressForm.Caption:=Cap+' - '+inttostr(round(PBAll.Position*100/PBAll.Max))+'%';
Label1.Caption:=Cap+fn;
PBOne.Position:=perc;
PBAll.Position:=100*Current+perc;
procedure TProgressForm.InitProgress;
Caption:=Cap;
Label1.Caption:='Подготовка...';
PBOne.Position:=0;
PBOne.Max:=100;
PBAll.Position:=0;
PBAll.Max:=qol*100;
Current:=0;
unit TestUnit;
StdCtrls, ActnList, ExtCtrls, ComCtrls, ToolWin, Grids, Outline, DirOutln,
Buttons, ShellApi, Registry;
TMainForm = class(TForm)
RecurseBox: TCheckBox;
BitBtn1: TBitBtn;
StaticText1: TStaticText;
MainKey: TEdit;
BitBtn2: TBitBtn;
Open: TOpenDialog;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
files: TListBox;
procedure FileDrop(var Msg: TWMDropFiles); message WM_DROPFILES;
procedure AddCmdLine(var msg: TMessage); message WM_USER;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure DoCommandLine(S: String);
procedure StopDblClick(Sender: TObject);
procedure GoDblClick(Sender: TObject);
procedure GenerateKey;
function DecodeKey: integer;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
MainForm: TMainForm;
Decode: boolean;
uses CodingUnit, OptionsUnit, ProgressUnit;
procedure TMainForm.GenerateKey;
i,k,l: integer;
s: string;
If Used[i] then
k:=random(9)+1;
s:=concat(s,Methods[i].MethodKey);
s:=concat(s,IntToStr(k));
l:=strlen(UsedMethods[i].Key)+k*6;
s:=concat(s,Format('%2d',[l]));
s:=concat(s,StrPas(UsedMethods[i].Key));
s:=concat(s,Format('%2d',[strlen(UsedMethods[i].Key)+k*5+UsedMethods[i].Direction]));
s:=concat(s,Format('%2d',[strlen(UsedMethods[i].Key)+k*4+UsedMethods[i].WayCount]));
for i:=1 to length(s) do if s[i]=' ' then s[i]:='-';
MainKey.Text:=S;
function TMainForm.DecodeKey;
i,k,l,t: integer;
Result:=0;
s:=MainKey.Text;
for i:=1 to length(s) do if s[i]='-' then s[i]:='0';
try
while s<>'' do
t:=MethodByChar(s[1]);
Used[t]:=true;
delete(s,1,1);
k:=strtoint(copy(s,1,1));
l:=strtoint(copy(s,1,2))-k*6;
delete(s,1,2);
StrPCopy(UsedMethods[t].Key,copy(s,1,l));
delete(s,1,l);
UsedMethods[t].Direction:=strtoint(copy(s,1,2))-l-k*5;
UsedMethods[t].WayCount:=strtoint(copy(s,1,2))-l-k*4;
except
on E:Exception do Result:=1;
Procedure TMainForm.DoCommandLine(S: String);
tmp: string;
System.CmdLine:=PChar(S);
tmp:=ParamStr(1);
if CompareText(tmp,'/D')=0 then
// декодирование
Decode:=true;
StaticText1.Caption:='Введите ключ';
MainKey.Color:=clWindow;
MainKey.ReadOnly:=false;
MainKey.Text:='';
if ParamCount>1 then
for i:=2 to ParamCount do
Files.Items.Add(ParamStr(i));
Страницы: 1, 2, 3, 4, 5