You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8724 8e941d3f-bd1b-0410-a28a-d453659cc2b4
159 lines
3.5 KiB
ObjectPascal
159 lines
3.5 KiB
ObjectPascal
unit rcg_Main;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, Classes, Controls, Forms, Dialogs, Buttons, StdCtrls, ExtCtrls,
|
|
OnGuard, OgUtil;
|
|
|
|
type
|
|
|
|
{ TrcgMain }
|
|
|
|
TrcgMain = class(TForm)
|
|
OgMakeKeys1: TOgMakeKeys;
|
|
|
|
lblAppKey: TLabel;
|
|
edtAppKey: TEdit;
|
|
|
|
chkMachMod: TCheckBox;
|
|
edtMachineMod: TEdit;
|
|
|
|
edtSerialNumber: TEdit;
|
|
lblSerialNumber: TLabel;
|
|
|
|
lblReleaseCode: TLabel;
|
|
edtReleaseCode: TEdit;
|
|
|
|
Bevel1: TBevel;
|
|
btnExit: TButton;
|
|
chkExpires: TCheckBox;
|
|
edtExpires: TEdit;
|
|
spdAppKey: TBitBtn;
|
|
spdReleaseCode: TBitBtn;
|
|
btnReadme: TButton;
|
|
|
|
procedure spdAppKeyClick(Sender: TObject);
|
|
procedure chkMachModClick(Sender: TObject);
|
|
procedure spdReleaseCodeClick(Sender: TObject);
|
|
procedure btnExitClick(Sender: TObject);
|
|
procedure chkExpiresClick(Sender: TObject);
|
|
procedure edtAppKeyChange(Sender: TObject);
|
|
procedure btnReadmeClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
ApplicationKey : TKey;
|
|
end;
|
|
|
|
var
|
|
rcgMain: TrcgMain;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
uses
|
|
frm_Readme;
|
|
|
|
procedure TrcgMain.spdAppKeyClick(Sender: TObject);
|
|
begin
|
|
if OgMakeKeys1.Execute then begin
|
|
OgMakeKeys1.GetKey(ApplicationKey);
|
|
edtAppKey.Text := BufferToHex(ApplicationKey, sizeof(ApplicationKey));
|
|
end;
|
|
end;
|
|
|
|
procedure TrcgMain.chkMachModClick(Sender: TObject);
|
|
begin
|
|
edtMachineMod.Enabled := chkMachMod.Checked;
|
|
if edtMachineMod.Enabled then begin
|
|
edtMachineMod.SetFocus;
|
|
edtMachineMod.SelectAll;
|
|
end;
|
|
end;
|
|
|
|
procedure TrcgMain.chkExpiresClick(Sender: TObject);
|
|
begin
|
|
edtExpires.Enabled := chkExpires.Checked;
|
|
if edtExpires.Enabled then begin
|
|
edtExpires.SetFocus;
|
|
edtExpires.SelectAll;
|
|
end;
|
|
end;
|
|
|
|
procedure TrcgMain.spdReleaseCodeClick(Sender: TObject);
|
|
var
|
|
Key : TKey;
|
|
Modifier : longint;
|
|
SerialNum : longint;
|
|
Expires : TDateTime;
|
|
ReleaseCode : TCode;
|
|
CodeString : string;
|
|
begin
|
|
ReleaseCode := Default(TCode);
|
|
edtReleaseCode.Text := '';
|
|
|
|
// Get the key that will be used to generate the ReleaseCode
|
|
Key := ApplicationKey;
|
|
if chkMachMod.Checked then
|
|
begin
|
|
if TryStrToInt(edtMachineMod.Text, Modifier) then
|
|
ApplyModifierToKeyPrim(Modifier, Key, sizeof(Key))
|
|
else
|
|
begin
|
|
MessageDlg('Invalid Machine Modifier. Please check your entry and try again.', mtError, [mbOK], 0);
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
// Get the expiration date
|
|
if chkExpires.Checked then
|
|
begin
|
|
if not TryStrToDate(edtExpires.Text, Expires) then
|
|
begin
|
|
MessageDlg('Invalid Expiration Date. Please check your entry and try again.', mtError, [mbOK], 0);
|
|
exit;
|
|
end;
|
|
end else
|
|
Expires := 0;
|
|
|
|
// Get the serial number
|
|
if not TryStrToInt(edtSerialNumber.Text, SerialNum) then
|
|
begin
|
|
MessageDlg('Invalid Serial Number. Please check your entry and try again.', mtError, [mbOK], 0);
|
|
exit;
|
|
end;
|
|
|
|
// Create the release code for the data givien
|
|
InitSerialNumberCode(Key, SerialNum, Expires, ReleaseCode);
|
|
CodeString := BufferToHex(ReleaseCode, sizeof(ReleaseCode));
|
|
|
|
// Insert spaces in the release code string for easier reading
|
|
System.Insert(' ', CodeString, 13);
|
|
System.Insert(' ', CodeString, 09);
|
|
System.Insert(' ', CodeString, 05);
|
|
edtReleaseCode.Text := CodeString;
|
|
end;
|
|
|
|
procedure TrcgMain.edtAppKeyChange(Sender: TObject);
|
|
begin
|
|
edtReleaseCode.Text := '';
|
|
end;
|
|
|
|
procedure TrcgMain.btnExitClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TrcgMain.btnReadmeClick(Sender: TObject);
|
|
begin
|
|
frmReadme.Show;
|
|
end;
|
|
|
|
|
|
end.
|