Files
2023-02-23 13:55:39 +00:00

134 lines
3.8 KiB
ObjectPascal

unit Exrgstru;
{$H+}
interface
uses
SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls,
IniFiles, OnGuard, OgUtil;
const
CKey : TKey = ($E5,$8F,$84,$D6,$92,$C9,$A4,$D8,
$1A,$FA,$6F,$8D,$AB,$FC,$DF,$B4);
type
{ TForm1 }
TForm1 = class(TForm)
Bevel1: TBevel;
Memo1: TMemo;
CloseBtn: TBitBtn;
OgRegistrationCode1: TOgRegistrationCode;
Label1: TLabel;
procedure OgRegistrationCode1GetKey(Sender: TObject; var Key: TKey);
procedure OgRegistrationCode1GetCode(Sender: TObject; var Code: TCode);
procedure OgRegistrationCode1Checked(Sender: TObject;
Status: TCodeStatus);
private
{ Private declarations }
public
{ Public declarations }
TheDir,
CodeStr,
ARegStr : string;
IniFile : TIniFile;
ED : TDateTime;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{=======================================================================}
procedure TForm1.OgRegistrationCode1GetKey(Sender: TObject; var Key: TKey);
begin
Key := CKey;
end;
{=======================================================================}
procedure TForm1.OgRegistrationCode1GetCode(Sender: TObject; var Code: TCode);
begin
TheDir := ExtractFilePath(ParamStr(0));
if FileExists(TheDir + 'RegCode.ini') then begin
IniFile := TIniFile.Create(TheDir + 'RegCode.ini');
try
CodeStr := IniFile.ReadString('Codes', 'RegCode', '');
HexToBuffer(CodeStr, Code, SizeOf(Code));
ARegStr := IniFile.ReadString('Codes', 'RegStr', '');
finally
IniFile.Free;
end;
end;
end;
{=======================================================================}
procedure TForm1.OgRegistrationCode1Checked(Sender: TObject; Status: TCodeStatus);
var
S,
C1 : string;
TC : TCode;
begin
{forced cutoff date }
ED := EncodeDate(2009, 12, 31);
case Status of
ogValidCode : begin
InitRegCode(CKey, ARegStr, ED, TC{%H-});
C1 := BufferToHex(TC, SizeOf(TC));
if (CompareText(C1, CodeStr) <> 0) then begin
ShowMessage('The Registration Name has been changed');
Application.Terminate;
end else
Label1.Caption := 'Registered to: ' + ARegStr;
end;
ogInvalidCode : begin
if not FileExists(TheDir + 'RegCode.ini') then begin
if (InputQuery('Codes', 'Reg String', ARegStr)) then begin
if (ARegStr = '') then begin
S := 'Empty string not allowed';
Application.Terminate;
end else begin
IniFile := TIniFile.Create(TheDir + 'RegCode.ini');
try
IniFile.WriteString('Codes', 'RegStr', ARegStr);
InitRegCode(CKey, ARegStr, ED, TC);
{save string representation of release code to Ini File}
CodeStr := BufferToHex(TC, SizeOf(TC));
IniFile.WriteString('Codes', 'RegCode', CodeStr);
finally
IniFile.Free;
end;
OgRegistrationCode1.CheckCode(True);
Exit;
end;
end else
Application.Terminate;
end else
S := 'Invalid Code';
end;
ogCodeExpired : S := 'Evaluation period expired';
end;
if (Status <> ogValidCode) then begin
ShowMessage(S);
Application.Terminate;
end;
end;
end.