160 lines
3.5 KiB
ObjectPascal
160 lines
3.5 KiB
ObjectPascal
unit rcg_Main;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, Classes,Controls, Forms, Dialogs,
|
|
Buttons, StdCtrls,LResources, OnGuard, OgUtil, ExtCtrls;
|
|
|
|
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
|
|
|
|
|
|
|
|
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
|
|
edtReleaseCode.Text := '';
|
|
|
|
// Get the key that will be used to generate the ReleaseCode
|
|
Key := ApplicationKey;
|
|
if chkMachMod.Checked then
|
|
try
|
|
Modifier := StrToInt(edtMachineMod.Text);
|
|
ApplyModifierToKeyPrim(Modifier, Key, sizeof(Key));
|
|
except
|
|
MessageDlg('Invalid Machine Modifier. Please check your entry and try again.', mtError, [mbOK], 0);
|
|
exit;
|
|
end;
|
|
|
|
// Get the expiration date
|
|
if chkExpires.Checked then
|
|
try
|
|
Expires := StrToDate(edtExpires.Text);
|
|
except
|
|
MessageDlg('Invalid Expiration Date. Please check your entry and try again.', mtError, [mbOK], 0);
|
|
exit;
|
|
end
|
|
else
|
|
Expires := 0;
|
|
|
|
// Get the serial number
|
|
try
|
|
SerialNum := StrToInt(edtSerialNumber.Text);
|
|
except
|
|
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;
|
|
|
|
|
|
initialization
|
|
{$i rcg_main.lrs}
|
|
|
|
end.
|