OnGuard: Refactor main units (replace lrs by res resources, less hints and warnings).

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8723 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2023-02-20 13:34:35 +00:00
parent 035b59cc66
commit 91b3ac7ce0
13 changed files with 129 additions and 845 deletions

View File

@ -24,7 +24,7 @@ Ports : Andrew Haines (Kylix version), Bogusław Brandys (FPC/Lazarus)"/>
"/> "/>
<Version Major="1" Release="1"/> <Version Major="1" Release="1"/>
<Files Count="22"> <Files Count="21">
<Item1> <Item1>
<Filename Value="../source/ogfile.pas"/> <Filename Value="../source/ogfile.pas"/>
<UnitName Value="ogfile"/> <UnitName Value="ogfile"/>
@ -95,25 +95,21 @@ Ports : Andrew Haines (Kylix version), Bogusław Brandys (FPC/Lazarus)"/>
<Type Value="LFM"/> <Type Value="LFM"/>
</Item17> </Item17>
<Item18> <Item18>
<Filename Value="../source/qonguard6.lrs"/>
<Type Value="LRS"/>
</Item18>
<Item19>
<Filename Value="../source/qonguard6.pas"/> <Filename Value="../source/qonguard6.pas"/>
<UnitName Value="qonguard6"/> <UnitName Value="qonguard6"/>
</Item19> </Item18>
<Item20> <Item19>
<Filename Value="../source/qonguard7.pas"/> <Filename Value="../source/qonguard7.pas"/>
<UnitName Value="qonguard7"/> <UnitName Value="qonguard7"/>
</Item20> </Item19>
<Item21> <Item20>
<Filename Value="../source/ogconst.pas"/> <Filename Value="../source/ogconst.pas"/>
<UnitName Value="ogconst"/> <UnitName Value="ogconst"/>
</Item21> </Item20>
<Item22> <Item21>
<Filename Value="../source/onguard.pas"/> <Filename Value="../source/onguard.pas"/>
<UnitName Value="onguard"/> <UnitName Value="onguard"/>
</Item22> </Item21>
</Files> </Files>
<CompatibilityMode Value="True"/> <CompatibilityMode Value="True"/>
<RequiredPkgs Count="2"> <RequiredPkgs Count="2">

View File

@ -815,6 +815,7 @@ procedure HashTMD(var Digest; DigestSize : LongInt; const Buf; BufSize : LongInt
var var
Context : TTMDContext; Context : TTMDContext;
begin begin
Context := Default(TTMDContext);
InitTMD(Context); InitTMD(Context);
UpdateTMD(Context, Buf, BufSize); UpdateTMD(Context, Buf, BufSize);
FinalizeTMD(Context, Digest, DigestSize); FinalizeTMD(Context, Digest, DigestSize);
@ -1201,7 +1202,7 @@ end;
function TOgCodeBase.DoOnGetCode : TCode; function TOgCodeBase.DoOnGetCode : TCode;
begin begin
FillChar(Result, SizeOf(Result), 0); Result := Default(TCode);
if FStoreCode then if FStoreCode then
Result := FCode Result := FCode
else begin else begin
@ -1227,7 +1228,7 @@ end;
{!!.02} {revised} {!!.02} {revised}
function TOgCodeBase.DoOnGetModifier : LongInt; function TOgCodeBase.DoOnGetModifier : LongInt;
var var
L : LongInt; L : LongInt = 0;
begin begin
Result := 0; Result := 0;
if FStoreModifier then if FStoreModifier then
@ -1253,6 +1254,7 @@ var
Work : TCode; Work : TCode;
begin begin
Result := '$' + BufferToHex(FCode, SizeOf(FCode)); Result := '$' + BufferToHex(FCode, SizeOf(FCode));
Work := Default(TCode);
if not HexToBuffer(Result, Work, SizeOf(Work)) then if not HexToBuffer(Result, Work, SizeOf(Work)) then
Result := ''; Result := '';
@ -1262,7 +1264,7 @@ end;
function TOgCodeBase.GetModifier : string; function TOgCodeBase.GetModifier : string;
var var
Work : LongInt; Work : LongInt = 0;
begin begin
Result := '$' + BufferToHex(FModifier, SizeOf(FModifier)); Result := '$' + BufferToHex(FModifier, SizeOf(FModifier));
if not HexToBuffer(Result, Work, SizeOf(Work)) then if not HexToBuffer(Result, Work, SizeOf(Work)) then
@ -1312,11 +1314,12 @@ end;
function TOgDateCode.CheckCode(Report : Boolean) : TCodeStatus; function TOgDateCode.CheckCode(Report : Boolean) : TCodeStatus;
var var
ACode : TCode; ACode : TCode;
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Result := ogValidCode; Result := ogValidCode;
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
AModifier := DoOnGetModifier; AModifier := DoOnGetModifier;
@ -1339,9 +1342,10 @@ end;
function TOgDateCode.GetValue : TDateTime; function TOgDateCode.GetValue : TDateTime;
var var
ACode : TCode; ACode : TCode;
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
AModifier := DoOnGetModifier; AModifier := DoOnGetModifier;
@ -1353,9 +1357,10 @@ end;
function TOgDateCode.GetInvalidCount: LongInt; function TOgDateCode.GetInvalidCount: LongInt;
var var
ACode : TCode; ACode : TCode;
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
AModifier := DoOnGetModifier; AModifier := DoOnGetModifier;
@ -1370,11 +1375,12 @@ end;
function TOgDaysCode.CheckCode(Report : Boolean) : TCodeStatus; function TOgDaysCode.CheckCode(Report : Boolean) : TCodeStatus;
var var
ACode : TCode; ACode : TCode;
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Result := ogValidCode; Result := ogValidCode;
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
AModifier := DoOnGetModifier; AModifier := DoOnGetModifier;
@ -1408,10 +1414,11 @@ end;
procedure TOgDaysCode.Decrease; procedure TOgDaysCode.Decrease;
var var
ACode : TCode; ACode : TCode;
Work : TCode; Work : TCode;
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
Work := ACode; Work := ACode;
@ -1437,9 +1444,10 @@ end;
function TOgDaysCode.GetValue : LongInt; function TOgDaysCode.GetValue : LongInt;
var var
ACode : TCode; ACode : TCode;
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
AModifier := DoOnGetModifier; AModifier := DoOnGetModifier;
@ -1452,9 +1460,10 @@ end;
function TOgDaysCode.GetInvalidCount : LongInt; function TOgDaysCode.GetInvalidCount : LongInt;
var var
ACode : TCode; ACode : TCode;
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
AModifier := DoOnGetModifier; AModifier := DoOnGetModifier;
@ -1639,13 +1648,14 @@ end;
function TOgRegistrationCode.CheckCode(Report : Boolean) : TCodeStatus; function TOgRegistrationCode.CheckCode(Report : Boolean) : TCodeStatus;
var var
ACode : TCode; ACode : TCode;
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
{RegStr : string;} {!!.02} {RegStr : string;} {!!.02}
begin begin
Result := ogValidCode; Result := ogValidCode;
FRegString := DoOnGetRegString; {!!.02} FRegString := DoOnGetRegString; {!!.02}
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
AModifier := DoOnGetModifier; AModifier := DoOnGetModifier;
@ -1683,11 +1693,12 @@ end;
function TOgSerialNumberCode.CheckCode(Report : Boolean) : TCodeStatus; function TOgSerialNumberCode.CheckCode(Report : Boolean) : TCodeStatus;
var var
ACode : TCode; ACode : TCode;
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Result := ogValidCode; Result := ogValidCode;
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
AModifier := DoOnGetModifier; AModifier := DoOnGetModifier;
@ -1705,9 +1716,10 @@ end;
function TOgSerialNumberCode.GetValue : LongInt; function TOgSerialNumberCode.GetValue : LongInt;
var var
ACode : TCode; ACode : TCode;
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
AModifier := DoOnGetModifier; AModifier := DoOnGetModifier;
@ -1722,11 +1734,12 @@ end;
function TOgSpecialCode.CheckCode(Report : Boolean) : TCodeStatus; function TOgSpecialCode.CheckCode(Report : Boolean) : TCodeStatus;
var var
ACode : TCode; ACode : TCode;
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Result := ogValidCode; Result := ogValidCode;
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
AModifier := DoOnGetModifier; AModifier := DoOnGetModifier;
@ -1744,9 +1757,10 @@ end;
function TOgSpecialCode.GetValue : LongInt; function TOgSpecialCode.GetValue : LongInt;
var var
ACode : TCode; ACode : TCode;
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
AModifier := DoOnGetModifier; AModifier := DoOnGetModifier;
@ -1765,6 +1779,7 @@ var
AModifier : LongInt; AModifier : LongInt;
begin begin
Result := ogValidCode; Result := ogValidCode;
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
@ -1803,6 +1818,7 @@ var
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
Work := ACode; Work := ACode;
@ -1829,6 +1845,7 @@ var
Key : TKey; Key : TKey;
AModifier : LongInt; AModifier : LongInt;
begin begin
Key := Default(TKey);
DoOnGetKey(Key); DoOnGetKey(Key);
ACode := DoOnGetCode; ACode := DoOnGetCode;
AModifier := DoOnGetModifier; AModifier := DoOnGetModifier;

View File

@ -1,104 +0,0 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TKeyGenerateFrm','FORMDATA',[
'TPF0'#15'TKeyGenerateFrm'#14'KeyGenerateFrm'#4'Left'#3#13#1#6'Height'#3#1#1#3
+'Top'#3'i'#1#5'Width'#3#231#1#18'HorzScrollBar.Page'#3#207#1#19'HorzScrollBa'
+'r.Range'#3#203#1#18'VertScrollBar.Page'#3#234#0#19'VertScrollBar.Range'#3
+#229#0#13'ActiveControl'#7#5'OKBtn'#8'AutoSize'#9#11'BorderStyle'#7#8'bsDial'
+'og'#7'Caption'#6#14'Key Generation'#12'ClientHeight'#3#1#1#11'ClientWidth'#3
+#231#1#5'Color'#7#6'clForm'#8'OnCreate'#7#10'FormCreate'#6'OnShow'#7#8'FormS'
+'how'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#7'2.3.0.0'#0#7'TBitB'
+'tn'#5'OKBtn'#21'AnchorSideTop.Control'#7#9'CancelBtn'#23'AnchorSideRight.Co'
+'ntrol'#7#9'CancelBtn'#4'Left'#3':'#1#6'Height'#2#25#3'Top'#3#211#0#5'Width'
+#2'K'#7'Anchors'#11#5'akTop'#7'akRight'#0#19'BorderSpacing.Right'#2#4#7'Capt'
+'ion'#6#2'OK'#7'Default'#9#11'ModalResult'#2#1#8'TabOrder'#2#0#0#0#7'TBitBtn'
+#9'CancelBtn'#21'AnchorSideTop.Control'#7#6'Panel1'#18'AnchorSideTop.Side'#7
+#9'asrBottom'#23'AnchorSideRight.Control'#7#6'Panel1'#20'AnchorSideRight.Sid'
+'e'#7#9'asrBottom'#4'Left'#3#137#1#6'Height'#2#25#3'Top'#3#211#0#5'Width'#2
+'K'#7'Anchors'#11#5'akTop'#7'akRight'#0#17'BorderSpacing.Top'#2#8#20'BorderS'
+'pacing.Bottom'#2#8#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2
+#1#0#0#6'TPanel'#6'Panel1'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSi'
+'deTop.Control'#7#5'Owner'#4'Left'#2#8#6'Height'#3#195#0#3'Top'#2#8#5'Width'
+#3#204#1#8'AutoSize'#9#20'BorderSpacing.Around'#2#8#10'BevelOuter'#7#9'bvLow'
+'ered'#12'ClientHeight'#3#195#0#11'ClientWidth'#3#204#1#16'ParentBackground'
+#8#8'TabOrder'#2#2#0#12'TSpeedButton'#11'CopyBlockSb'#21'AnchorSideTop.Contr'
+'ol'#7#10'BlockKeyEd'#18'AnchorSideTop.Side'#7#9'asrCenter'#23'AnchorSideRig'
+'ht.Control'#7#6'Panel1'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3
+#169#1#6'Height'#2#24#4'Hint'#6#21'Copy key to clipboard'#3'Top'#3#131#0#5'W'
+'idth'#2#26#7'Anchors'#11#5'akTop'#7'akRight'#0#19'BorderSpacing.Right'#2#8
+#10'Glyph.Data'#10'F'#1#0#0'B'#1#0#0'BMB'#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0#17
+#0#0#0#17#0#0#0#1#0#4#0#0#0#0#0#204#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0#128
+#128#128#0#192#192#192#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255
+#0#255#255#0#0#255#255#255#0#136#136#136#136#136#136#136#136#128#0#0#0#136
+#136#136#136#136#136#136#136#128#0#0#0#136#136#136#132'DDDD'#128#0#0#0#136
+#136#136#132#255#255#255#244#128#0#0#0#136#136#136#132#240#0#0#244#128#0#0#0
+#128#0#0#4#255#255#255#244#128#0#0#0#128#255#255#244#240#0#0#244#128#0#0#0
+#128#240#0#4#255#255#255#244#128#0#0#0#128#255#255#244#240#15'DD'#128#0#0#0
+#128#240#0#4#255#255'OH'#128#0#0#0#128#255#255#244#255#255'D'#136#128#0#0#0
+#128#240#15#4'DDH'#136#128#0#0#0#128#255#255#15#8#136#136#136#128#0#0#0#128
+#255#255#0#136#136#136#136#128#0#0#0#128#0#0#8#136#136#136#136#128#0#0#0#136
+#136#136#136#136#136#136#136#128#0#0#0#136#136#136#136#136#136#136#136#128#0
+#0#0#7'OnClick'#7#16'CopyBlockSbClick'#0#0#12'TSpeedButton'#13'CopyByteKeySb'
+#21'AnchorSideTop.Control'#7#9'ByteKeyEd'#18'AnchorSideTop.Side'#7#9'asrCent'
+'er'#23'AnchorSideRight.Control'#7#6'Panel1'#20'AnchorSideRight.Side'#7#9'as'
+'rBottom'#4'Left'#3#169#1#6'Height'#2#24#4'Hint'#6#21'Copy key to clipboard'
+#3'Top'#3#162#0#5'Width'#2#26#7'Anchors'#11#5'akTop'#7'akRight'#0#19'BorderS'
+'pacing.Right'#2#8#10'Glyph.Data'#10'F'#1#0#0'B'#1#0#0'BMB'#1#0#0#0#0#0#0'v'
+#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0#4#0#0#0#0#0#204#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0
+#128#128#0#0#128#128#128#0#192#192#192#0#0#0#255#0#0#255#0#0#0#255#255#0#255
+#0#0#0#255#0#255#0#255#255#0#0#255#255#255#0#136#136#136#136#136#136#136#136
+#128#0#0#0#136#136#136#136#136#136#136#136#128#0#0#0#136#136#136#132'DDDD'
+#128#0#0#0#136#136#136#132#255#255#255#244#128#0#0#0#136#136#136#132#240#0#0
+#244#128#0#0#0#128#0#0#4#255#255#255#244#128#0#0#0#128#255#255#244#240#0#0
+#244#128#0#0#0#128#240#0#4#255#255#255#244#128#0#0#0#128#255#255#244#240#15
+'DD'#128#0#0#0#128#240#0#4#255#255'OH'#128#0#0#0#128#255#255#244#255#255'D'
+#136#128#0#0#0#128#240#15#4'DDH'#136#128#0#0#0#128#255#255#15#8#136#136#136
+#128#0#0#0#128#255#255#0#136#136#136#136#128#0#0#0#128#0#0#8#136#136#136#136
+#128#0#0#0#136#136#136#136#136#136#136#136#128#0#0#0#136#136#136#136#136#136
+#136#136#128#0#0#0#7'OnClick'#7#18'CopyByteKeySbClick'#0#0#6'TLabel'#6'Label'
+'4'#22'AnchorSideLeft.Control'#7#6'Panel1'#21'AnchorSideTop.Control'#7#11'Ge'
+'nerateBtn'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#9#6'Height'#2#15
+#3'Top'#2#14#5'Width'#2'1'#18'BorderSpacing.Left'#2#8#7'Caption'#6#10'Key &T'
+'ype:'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#22'Anc'
+'horSideLeft.Control'#7#6'Panel1'#21'AnchorSideTop.Control'#7#9'KeyTypeCb'#18
+'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#9#6'Height'#2#15#3'Top'#2')'#5
+'Width'#2'<'#18'BorderSpacing.Left'#2#8#17'BorderSpacing.Top'#2#8#7'Caption'
,#6#12'Key &Phrase:'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'L'
+'abel3'#22'AnchorSideLeft.Control'#7#6'Panel1'#21'AnchorSideTop.Control'#7#11
+'KeyStringMe'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#9#6'Height'#2
+#15#3'Top'#2's'#5'Width'#2#22#18'BorderSpacing.Left'#2#8#17'BorderSpacing.To'
+'p'#2#8#7'Caption'#6#4'Key:'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#7'TB'
+'utton'#11'GenerateBtn'#22'AnchorSideLeft.Control'#7#9'KeyTypeCb'#19'AnchorS'
+'ideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#6'Panel1'#20'Ancho'
+'rSideRight.Side'#7#9'asrBottom'#4'Left'#3'e'#1#6'Height'#2#25#4'Hint'#6#12
+'Generate key'#3'Top'#2#9#5'Width'#2'^'#8'AutoSize'#9#20'BorderSpacing.Aroun'
+'d'#2#8#7'Caption'#6#13'&Generate key'#7'Enabled'#8#7'OnClick'#7#16'Generate'
+'BtnClick'#8'TabOrder'#2#2#0#0#9'TComboBox'#9'KeyTypeCb'#22'AnchorSideLeft.C'
+'ontrol'#7#6'Label2'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop'
+'.Control'#7#11'GenerateBtn'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2
+'U'#6'Height'#2#23#3'Top'#2#10#5'Width'#3#240#0#18'BorderSpacing.Left'#2#16
+#19'BorderSpacing.Right'#2' '#20'Constraints.MinWidth'#3#240#0#10'ItemHeight'
+#2#15#13'Items.Strings'#1#6#6'Random'#6#13'Standard Text'#6#19'Case-sensitiv'
+'e Text'#0#8'OnChange'#7#15'KeyTypeCbChange'#5'Style'#7#14'csDropDownList'#8
+'TabOrder'#2#4#0#0#5'TMemo'#11'KeyStringMe'#22'AnchorSideLeft.Control'#7#6'P'
+'anel1'#21'AnchorSideTop.Control'#7#6'Label2'#18'AnchorSideTop.Side'#7#9'asr'
+'Bottom'#23'AnchorSideRight.Control'#7#6'Panel1'#20'AnchorSideRight.Side'#7#9
+'asrBottom'#4'Left'#2#9#6'Height'#2'1'#3'Top'#2':'#5'Width'#3#186#1#7'Anchor'
+'s'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#8#17'BorderS'
+'pacing.Top'#2#2#19'BorderSpacing.Right'#2#8#8'OnChange'#7#17'KeyStringMeCha'
+'nge'#10'ScrollBars'#7#10'ssVertical'#8'TabOrder'#2#0#0#0#5'TEdit'#10'BlockK'
+'eyEd'#22'AnchorSideLeft.Control'#7#6'Panel1'#21'AnchorSideTop.Control'#7#6
+'Label3'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7
+#11'CopyBlockSb'#4'Left'#2#9#6'Height'#2#23#3'Top'#3#132#0#5'Width'#3#156#1#7
+'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#8#17'B'
+'orderSpacing.Top'#2#2#19'BorderSpacing.Right'#2#4#8'OnChange'#7#16'BlockKey'
+'EdChange'#8'TabOrder'#2#1#0#0#5'TEdit'#9'ByteKeyEd'#22'AnchorSideLeft.Contr'
+'ol'#7#6'Panel1'#21'AnchorSideTop.Control'#7#10'BlockKeyEd'#18'AnchorSideTop'
+'.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#13'CopyByteKeySb'#4'Lef'
+'t'#2#9#6'Height'#2#23#3'Top'#3#163#0#5'Width'#3#156#1#7'Anchors'#11#5'akTop'
+#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#8#17'BorderSpacing.Top'#2#8
+#19'BorderSpacing.Right'#2#4#20'BorderSpacing.Bottom'#2#8#8'OnChange'#7#15'B'
+'yteKeyEdChange'#8'TabOrder'#2#3#0#0#0#0
]);

View File

@ -41,8 +41,8 @@ unit qonguard1;
interface interface
uses uses
SysUtils,Classes, Graphics, Controls, Forms, Dialogs, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls,LResources, StdCtrls, Buttons, ExtCtrls,
ogutil, onguard; ogutil, onguard;
type type
@ -92,7 +92,10 @@ var
implementation implementation
{$R *.lfm}
const
KEYSTRING_COLORS: Array[Boolean] of TColor = (clBtnFace, clWindow);
procedure TKeyGenerateFrm.FormCreate(Sender: TObject); procedure TKeyGenerateFrm.FormCreate(Sender: TObject);
begin begin
@ -100,13 +103,8 @@ begin
{set state of memo and generate button} {set state of memo and generate button}
KeyStringMe.Enabled := (KeyTypeCb.ItemIndex <> 0); KeyStringMe.Enabled := (KeyTypeCb.ItemIndex <> 0);
case KeyStringMe.Enabled of KeyStringMe.Color := KEYSTRING_COLORS[KeyStringMe.Enabled];
True : KeyStringMe.Color := clWindow; GenerateBtn.Enabled := (KeyTypeCb.ItemIndex = 0) or (KeyStringMe.Lines.Count > 0);
False : KeyStringMe.Color := clBtnFace;
end;
GenerateBtn.Enabled := (KeyTypeCb.ItemIndex = 0) or
(KeyStringMe.Lines.Count > 0);
end; end;
procedure TKeyGenerateFrm.FormShow(Sender: TObject); procedure TKeyGenerateFrm.FormShow(Sender: TObject);
@ -121,12 +119,8 @@ begin
{set state of memo and generate button} {set state of memo and generate button}
KeyStringMe.Enabled := (KeyTypeCb.ItemIndex <> 0); KeyStringMe.Enabled := (KeyTypeCb.ItemIndex <> 0);
case KeyStringMe.Enabled of KeyStringMe.Color := KEYSTRING_COLORS[KeyStringMe.Enabled];
True : KeyStringMe.Color := clWindow; GenerateBtn.Enabled := (KeyTypeCb.ItemIndex = 0) or (KeyStringMe.Lines.Count > 0);
False : KeyStringMe.Color := clBtnFace;
end;
GenerateBtn.Enabled := (KeyTypeCb.ItemIndex = 0) or
(KeyStringMe.Lines.Count > 0);
if KeyTypeCb.ItemIndex > -1 then if KeyTypeCb.ItemIndex > -1 then
FKeyType := TKeyType(KeyTypeCb.ItemIndex); FKeyType := TKeyType(KeyTypeCb.ItemIndex);
@ -138,8 +132,7 @@ begin
ByteKeyEd.Text := ''; ByteKeyEd.Text := '';
{set state of generate button} {set state of generate button}
GenerateBtn.Enabled := (KeyTypeCb.ItemIndex = 0) or GenerateBtn.Enabled := (KeyTypeCb.ItemIndex = 0) or (KeyStringMe.Lines.Count > 0);
(KeyStringMe.Lines.Count > 0);
end; end;
procedure TKeyGenerateFrm.BlockKeyEdChange(Sender: TObject); procedure TKeyGenerateFrm.BlockKeyEdChange(Sender: TObject);
@ -231,8 +224,4 @@ begin
FKey := Value; FKey := Value;
end; end;
initialization
{$I qonguard1.lrs}
end. end.

View File

@ -1,216 +0,0 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TCodeGenerateFrm','FORMDATA',[
'TPF0'#16'TCodeGenerateFrm'#15'CodeGenerateFrm'#4'Left'#3#228#0#6'Height'#3#1
+#2#3'Top'#2'T'#5'Width'#3','#2#13'ActiveControl'#7#5'OKBtn'#8'AutoSize'#9#11
+'BorderIcons'#11#12'biSystemMenu'#10'biMinimize'#0#7'Caption'#6#15'Code Gene'
+'ration'#12'ClientHeight'#3#1#2#11'ClientWidth'#3','#2#5'Color'#7#6'clForm'#8
+'OnCreate'#7#10'FormCreate'#6'OnShow'#7#8'FormShow'#8'Position'#7#14'poScree'
+'nCenter'#10'LCLVersion'#6#7'2.3.0.0'#0#7'TBitBtn'#5'OKBtn'#21'AnchorSideTop'
+'.Control'#7#9'GroupBox2'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSid'
+'eRight.Control'#7#9'CancelBtn'#4'Left'#3#127#1#6'Height'#2#25#3'Top'#3#214#1
+#5'Width'#2'K'#7'Anchors'#11#5'akTop'#7'akRight'#0#17'BorderSpacing.Top'#2#16
+#19'BorderSpacing.Right'#2#6#7'Caption'#6#2'OK'#11'ModalResult'#2#1#8'TabOrd'
+'er'#2#0#0#0#7'TBitBtn'#9'CancelBtn'#21'AnchorSideTop.Control'#7#9'GroupBox2'
+#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'
+#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#208#1#6'Height'#2#25#3'To'
+'p'#3#214#1#5'Width'#2'L'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'B'
+'orderSpacing.Top'#2#16#19'BorderSpacing.Right'#2#16#20'BorderSpacing.Bottom'
+#2#12#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#1#0#0#12'TPag'
+'eControl'#8'CodesNbk'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTo'
+'p.Control'#7#5'Owner'#4'Left'#2#6#6'Height'#3#130#0#3'Top'#2#6#5'Width'#3#28
+#2#10'ActivePage'#7#9'TabSheet1'#20'BorderSpacing.Around'#2#6#8'TabIndex'#2#0
+#8'TabOrder'#2#2#10'OnChanging'#7#16'CodesNbkChanging'#0#9'TTabSheet'#9'TabS'
+'heet1'#7'Caption'#6#4'Date'#12'ClientHeight'#2'f'#11'ClientWidth'#3#20#2#0#6
+'TLabel'#6'Label9'#4'Left'#2#4#6'Height'#2#15#3'Top'#2#12#5'Width'#2'5'#7'Ca'
+'ption'#6#11'Start date:'#11'ParentColor'#8#0#0#6'TLabel'#7'Label11'#4'Left'
+#3#204#0#6'Height'#2#15#3'Top'#2#12#5'Width'#2'1'#7'Caption'#6#9'End date:'
+#11'ParentColor'#8#0#0#5'TEdit'#11'StartDateEd'#4'Left'#2'\'#6'Height'#2#23#3
+'Top'#2#8#5'Width'#2'e'#8'OnChange'#7#17'ParametersChanged'#10'OnKeyPress'#7
+#14'DateEdKeyPress'#8'TabOrder'#2#0#0#0#5'TEdit'#9'EndDateEd'#4'Left'#3#28#1
+#6'Height'#2#23#3'Top'#2#8#5'Width'#2'e'#8'OnChange'#7#17'ParametersChanged'
+#10'OnKeyPress'#7#14'DateEdKeyPress'#8'TabOrder'#2#1#0#0#0#9'TTabSheet'#9'Ta'
+'bSheet2'#7'Caption'#6#4'Days'#12'ClientHeight'#2'f'#11'ClientWidth'#3#20#2
+#10'ImageIndex'#2#1#0#6'TLabel'#7'Label13'#4'Left'#2#4#6'Height'#2#15#3'Top'
+#2#12#5'Width'#2'9'#7'Caption'#6#10'Day count:'#11'ParentColor'#8#0#0#6'TLab'
+'el'#6'Label2'#4'Left'#3#228#0#6'Height'#2#15#3'Top'#2#12#5'Width'#2'('#7'Ca'
+'ption'#6#8'Expires:'#11'ParentColor'#8#0#0#5'TEdit'#11'DaysCountEd'#4'Left'
+#2'X'#6'Height'#2#23#3'Top'#2#8#5'Width'#2'q'#8'OnChange'#7#17'ParametersCha'
+'nged'#10'OnKeyPress'#7#16'NumberKeyEdPress'#8'TabOrder'#2#0#4'Text'#6#1'0'#0
+#0#5'TEdit'#13'DaysExpiresEd'#4'Left'#3'('#1#6'Height'#2#23#3'Top'#2#8#5'Wid'
+'th'#2'a'#8'OnChange'#7#17'ParametersChanged'#10'OnKeyPress'#7#14'DateEdKeyP'
+'ress'#8'TabOrder'#2#1#0#0#0#9'TTabSheet'#9'TabSheet3'#7'Caption'#6#3'Reg'#12
+'ClientHeight'#2'f'#11'ClientWidth'#3#20#2#10'ImageIndex'#2#2#0#12'TSpeedBut'
+'ton'#12'RegStrCopySb'#4'Left'#3#234#1#6'Height'#2#23#4'Hint'#6#17'Copy to c'
+'lipboard'#3'Top'#2#7#5'Width'#2#23#10'Glyph.Data'#10'F'#1#0#0'B'#1#0#0'BMB'
+#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0#4#0#0#0#0#0#204#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#128#128#0#128
+#0#0#0#128#0#128#0#128#128#0#0#128#128#128#0#192#192#192#0#0#0#255#0#0#255#0
+#0#0#255#255#0#255#0#0#0#255#0#255#0#255#255#0#0#255#255#255#0#136#136#136
+#136#136#136#136#136#128#0#0#0#136#136#136#136#136#136#136#136#128#0#0#0#136
+#136#136#132'DDDD'#128#0#0#0#136#136#136#132#255#255#255#244#128#0#0#0#136
+#136#136#132#240#0#0#244#128#0#0#0#128#0#0#4#255#255#255#244#128#0#0#0#128
+#255#255#244#240#0#0#244#128#0#0#0#128#240#0#4#255#255#255#244#128#0#0#0#128
+#255#255#244#240#15'DD'#128#0#0#0#128#240#0#4#255#255'OH'#128#0#0#0#128#255
+#255#244#255#255'D'#136#128#0#0#0#128#240#15#4'DDH'#136#128#0#0#0#128#255#255
+#15#8#136#136#136#128#0#0#0#128#255#255#0#136#136#136#136#128#0#0#0#128#0#0#8
+#136#136#136#136#128#0#0#0#136#136#136#136#136#136#136#136#128#0#0#0#136#136
+#136#136#136#136#136#136#128#0#0#0#7'OnClick'#7#17'RegStrCopySbClick'#0#0#6
+'TLabel'#6'Label6'#4'Left'#2#8#6'Height'#2#15#3'Top'#2#12#5'Width'#2'"'#7'Ca'
+'ption'#6#7'String:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3'$'#1
+#6'Height'#2#15#3'Top'#2'0'#5'Width'#2'('#7'Caption'#6#8'Expires:'#11'Parent'
+'Color'#8#0#0#7'TButton'#12'RegRandomBtn'#4'Left'#2'H'#6'Height'#2#25#3'Top'
+#2','#5'Width'#3#145#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#14'&Ra'
+'ndom Number'#7'OnClick'#7#17'RegRandomBtnClick'#8'TabOrder'#2#1#0#0#5'TEdit'
+#8'RegStrEd'#4'Left'#2'D'#6'Height'#2#23#3'Top'#2#8#5'Width'#3#157#1#8'TabOr'
+'der'#2#0#0#0#5'TEdit'#12'RegExpiresEd'#4'Left'#3'e'#1#6'Height'#2#23#3'Top'
+#2','#5'Width'#2'\'#8'OnChange'#7#17'ParametersChanged'#10'OnKeyPress'#7#14
,'DateEdKeyPress'#8'TabOrder'#2#2#0#0#0#9'TTabSheet'#9'TabSheet4'#7'Caption'#6
+#3'S/N'#12'ClientHeight'#2'f'#11'ClientWidth'#3#20#2#10'ImageIndex'#2#3#0#6
+'TLabel'#6'Label7'#4'Left'#2#8#6'Height'#2#15#3'Top'#2#12#5'Width'#2'N'#7'Ca'
+'ption'#6#15'&Serial Number:'#11'ParentColor'#8#0#0#6'TLabel'#7'Label15'#4'L'
+'eft'#3#12#1#6'Height'#2#15#3'Top'#2#12#5'Width'#2'('#7'Caption'#6#8'Expires'
+':'#11'ParentColor'#8#0#0#7'TButton'#12'SerRandomBtn'#4'Left'#2#8#6'Height'#2
+#25#3'Top'#2','#5'Width'#3#145#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'
+#6#14'&Random Number'#7'OnClick'#7#17'SerRandomBtnClick'#8'TabOrder'#2#2#0#0
+#5'TEdit'#14'SerialNumberEd'#4'Left'#2'|'#6'Height'#2#23#3'Top'#2#8#5'Width'
+#2'}'#8'OnChange'#7#17'ParametersChanged'#10'OnKeyPress'#7#16'NumberKeyEdPre'
+'ss'#8'TabOrder'#2#0#4'Text'#6#1'0'#0#0#5'TEdit'#15'SerialExpiresEd'#4'Left'
+#3'P'#1#6'Height'#2#23#3'Top'#2#8#5'Width'#2'a'#8'OnChange'#7#17'ParametersC'
+'hanged'#10'OnKeyPress'#7#14'DateEdKeyPress'#8'TabOrder'#2#1#0#0#0#9'TTabShe'
+'et'#9'TabSheet5'#7'Caption'#6#5'Usage'#12'ClientHeight'#2'f'#11'ClientWidth'
+#3#20#2#10'ImageIndex'#2#4#0#6'TLabel'#7'Label14'#4'Left'#2#4#6'Height'#2#15
+#3'Top'#2#12#5'Width'#2'E'#7'Caption'#6#12'Usage count:'#11'ParentColor'#8#0
+#0#6'TLabel'#7'Label17'#4'Left'#3#12#1#6'Height'#2#15#3'Top'#2#12#5'Width'#2
+'('#7'Caption'#6#8'Expires:'#11'ParentColor'#8#0#0#5'TEdit'#12'UsageCountEd'
+#4'Left'#2'l'#6'Height'#2#23#3'Top'#2#8#5'Width'#2'q'#8'OnChange'#7#17'Param'
+'etersChanged'#10'OnKeyPress'#7#16'NumberKeyEdPress'#8'TabOrder'#2#0#4'Text'
+#6#1'0'#0#0#5'TEdit'#14'UsageExpiresEd'#4'Left'#3'P'#1#6'Height'#2#23#3'Top'
+#2#8#5'Width'#2'a'#8'OnChange'#7#17'ParametersChanged'#10'OnKeyPress'#7#14'D'
+'ateEdKeyPress'#8'TabOrder'#2#1#0#0#0#9'TTabSheet'#9'TabSheet6'#7'Caption'#6
+#7'Network'#12'ClientHeight'#2'f'#11'ClientWidth'#3#20#2#10'ImageIndex'#2#5#0
+#6'TLabel'#7'Label10'#4'Left'#2#4#6'Height'#2#15#3'Top'#2#12#5'Width'#2'C'#7
+'Caption'#6#13'Access Slots:'#11'ParentColor'#8#0#0#5'TEdit'#14'NetworkSlots'
+'Ed'#4'Left'#2't'#6'Height'#2#23#3'Top'#2#8#5'Width'#2'q'#8'OnChange'#7#17'P'
+'arametersChanged'#10'OnKeyPress'#7#16'NumberKeyEdPress'#8'TabOrder'#2#0#4'T'
+'ext'#6#1'2'#0#0#0#9'TTabSheet'#9'TabSheet7'#7'Caption'#6#7'Special'#12'Clie'
+'ntHeight'#2'f'#11'ClientWidth'#3#20#2#10'ImageIndex'#2#6#0#6'TLabel'#7'Labe'
+'l12'#4'Left'#2#4#6'Height'#2#15#3'Top'#2#12#5'Width'#2'B'#7'Caption'#6#13'S'
+'pecial data:'#11'ParentColor'#8#0#0#6'TLabel'#7'Label19'#4'Left'#3#252#0#6
+'Height'#2#15#3'Top'#2#12#5'Width'#2'('#7'Caption'#6#8'Expires:'#11'ParentCo'
+'lor'#8#0#0#5'TEdit'#13'SpecialDataEd'#4'Left'#2'h'#6'Height'#2#23#3'Top'#2#8
+#5'Width'#3#129#0#8'OnChange'#7#17'ParametersChanged'#10'OnKeyPress'#7#16'Nu'
+'mberKeyEdPress'#8'TabOrder'#2#0#4'Text'#6#1'0'#0#0#5'TEdit'#16'SpecialExpir'
+'esEd'#4'Left'#3'@'#1#6'Height'#2#23#3'Top'#2#8#5'Width'#2'i'#8'OnChange'#7
+#17'ParametersChanged'#10'OnKeyPress'#7#14'DateEdKeyPress'#8'TabOrder'#2#1#0
+#0#0#0#9'TGroupBox'#9'GroupBox1'#22'AnchorSideLeft.Control'#7#8'CodesNbk'#21
+'AnchorSideTop.Control'#7#8'CodesNbk'#18'AnchorSideTop.Side'#7#9'asrBottom'
+#23'AnchorSideRight.Control'#7#8'CodesNbk'#20'AnchorSideRight.Side'#7#9'asrB'
+'ottom'#4'Left'#2#6#6'Height'#3#239#0#3'Top'#3#142#0#5'Width'#3#28#2#7'Ancho'
+'rs'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#9#7'Caption'#6#19'&Key u'
+'sed to encode'#12'ClientHeight'#3#219#0#11'ClientWidth'#3#24#2#16'ParentBac'
+'kground'#8#8'TabOrder'#2#3#0#12'TSpeedButton'#13'GenerateKeySb'#21'AnchorSi'
+'deTop.Control'#7#10'BlockKeyEd'#18'AnchorSideTop.Side'#7#9'asrCenter'#23'An'
+'chorSideRight.Control'#7#11'ModStringEd'#20'AnchorSideRight.Side'#7#9'asrBo'
+'ttom'#4'Left'#3#239#1#6'Height'#2#24#4'Hint'#6#12'Generate key'#3'Top'#3#179
+#0#5'Width'#2#26#7'Anchors'#11#5'akTop'#7'akRight'#0#10'Glyph.Data'#10'F'#1#0
+#0'B'#1#0#0'BMB'#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0#4#0#0
+#0#0#0#204#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0
+#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0#128#128#128#0#192#192#192#0#0
+#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0#255#255#0#0#255#255#255
+#0#136#136#136#136#136#136#136#136#128#0#0#0#136#136#136#136#136#136#136#136
+#128#0#0#0#136#136#136#136#136#136#136#136#128#0#0#0#136#136#136#136#136#136
+#136#136#128#0#0#0#136#136#136#136#136#136#136#136#128#0#0#0#136#136#0#8#136
+#136#136#136#128#0#0#0#136#128#0#0#136#8#136#128#128#0#0#0#136#0#152#144#8#8
+#0#128#128#0#0#0#136#0#137#128#0#0#0#0#128#0#0#0#136#0#137#128#0#0#0#0#128#0
+#0#0#136#0#152#144#8#136#136#136#128#0#0#0#136#128#0#0#136#136#136#136#128#0
+#0#0#136#136#0#8#136#136#136#136#128#0#0#0#136#136#136#136#136#136#136#136
+#128#0#0#0#136#136#136#136#136#136#136#136#128#0#0#0#136#136#136#136#136#136
+#136#136#128#0#0#0#136#136#136#136#136#136#136#136#128#0#0#0#7'OnClick'#7#18
+'GenerateKeySbClick'#0#0#6'TLabel'#6'Label1'#22'AnchorSideLeft.Control'#7#9
+'GroupBox1'#21'AnchorSideTop.Control'#7#11'ModStringEd'#18'AnchorSideTop.Sid'
,'e'#7#9'asrBottom'#4'Left'#2#16#6'Height'#2#15#3'Top'#2'o'#5'Width'#2'0'#18
+'BorderSpacing.Left'#2#16#17'BorderSpacing.Top'#2#16#7'Caption'#6#9'Modifier'
+':'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#22'AnchorSideLeft.Control'#7#6
+'Label1'#21'AnchorSideTop.Control'#7#10'ModifierEd'#18'AnchorSideTop.Side'#7
+#9'asrBottom'#4'Left'#2#16#6'Height'#2#15#3'Top'#3#163#0#5'Width'#2#22#17'Bo'
+'rderSpacing.Top'#2#12#7'Caption'#6#4'Key:'#11'ParentColor'#8#0#0#9'TCheckBo'
+'x'#12'NoModifierCb'#22'AnchorSideLeft.Control'#7#9'GroupBox1'#21'AnchorSide'
+'Top.Control'#7#9'GroupBox1'#4'Left'#2#16#6'Height'#2#19#3'Top'#2#6#5'Width'
+#2'R'#18'BorderSpacing.Left'#2#16#17'BorderSpacing.Top'#2#6#7'Caption'#6#11
+'No modifier'#7'Checked'#9#7'OnClick'#7#13'ModifierClick'#5'State'#7#9'cbChe'
+'cked'#8'TabOrder'#2#0#0#0#9'TCheckBox'#17'MachineModifierCb'#22'AnchorSideL'
+'eft.Control'#7#12'NoModifierCb'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'A'
+'nchorSideTop.Control'#7#12'NoModifierCb'#4'Left'#3#146#0#6'Height'#2#19#3'T'
+'op'#2#6#5'Width'#2'p'#18'BorderSpacing.Left'#2'0'#7'Caption'#6#16'Machine m'
+'odifier'#7'OnClick'#7#13'ModifierClick'#8'TabOrder'#2#1#0#0#9'TCheckBox'#16
+'UniqueModifierCb'#22'AnchorSideLeft.Control'#7#17'MachineModifierCb'#19'Anc'
+'horSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#12'NoModifierC'
+'b'#4'Left'#3'2'#1#6'Height'#2#19#3'Top'#2#6#5'Width'#2'h'#18'BorderSpacing.'
+'Left'#2'0'#7'Caption'#6#15'Unique modifier'#7'OnClick'#7#13'ModifierClick'#8
+'TabOrder'#2#2#0#0#9'TCheckBox'#14'DateModifierCb'#22'AnchorSideLeft.Control'
+#7#12'NoModifierCb'#21'AnchorSideTop.Control'#7#9'ModDateEd'#18'AnchorSideTo'
+'p.Side'#7#9'asrCenter'#4'Left'#2#16#6'Height'#2#19#3'Top'#2''''#5'Width'#2
+'Z'#7'Caption'#6#13'Date modifier'#7'OnClick'#7#13'ModifierClick'#8'TabOrder'
+#2#3#0#0#9'TCheckBox'#16'StringModifierCb'#22'AnchorSideLeft.Control'#7#12'N'
+'oModifierCb'#21'AnchorSideTop.Control'#7#11'ModStringEd'#18'AnchorSideTop.S'
+'ide'#7#9'asrCenter'#4'Left'#2#16#6'Height'#2#19#3'Top'#2'J'#5'Width'#2'a'#7
+'Caption'#6#15'String Modifier'#7'OnClick'#7#13'ModifierClick'#8'TabOrder'#2
+#4#0#0#5'TEdit'#9'ModDateEd'#22'AnchorSideLeft.Control'#7#17'MachineModifier'
+'Cb'#21'AnchorSideTop.Control'#7#17'MachineModifierCb'#18'AnchorSideTop.Side'
+#7#9'asrBottom'#4'Left'#3#146#0#6'Height'#2#23#3'Top'#2'%'#5'Width'#2'b'#17
+'BorderSpacing.Top'#2#12#8'OnChange'#7#13'ModifierClick'#10'OnKeyPress'#7#14
+'DateEdKeyPress'#8'TabOrder'#2#6#0#0#5'TEdit'#11'ModStringEd'#22'AnchorSideL'
+'eft.Control'#7#9'ModDateEd'#21'AnchorSideTop.Control'#7#9'ModDateEd'#18'Anc'
+'horSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'GroupBox1'
+#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#146#0#6'Height'#2#23#3'To'
+'p'#2'H'#5'Width'#3'w'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'Aut'
+'oSize'#8#17'BorderSpacing.Top'#2#12#19'BorderSpacing.Right'#2#15#8'OnChange'
+#7#13'ModifierClick'#8'TabOrder'#2#8#0#0#5'TEdit'#10'ModifierEd'#22'AnchorSi'
+'deLeft.Control'#7#6'Label1'#21'AnchorSideTop.Control'#7#6'Label1'#18'Anchor'
+'SideTop.Side'#7#9'asrBottom'#4'Left'#2#16#6'Height'#2#23#3'Top'#3#128#0#5'W'
+'idth'#3#169#0#17'BorderSpacing.Top'#2#2#8'OnChange'#7#17'ParametersChanged'
+#10'OnKeyPress'#7#18'ModifierEdKeyPress'#8'TabOrder'#2#5#0#0#5'TEdit'#10'Blo'
+'ckKeyEd'#22'AnchorSideLeft.Control'#7#6'Label1'#21'AnchorSideTop.Control'#7
+#6'Label5'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'
+#7#13'GenerateKeySb'#4'Left'#2#16#6'Height'#2#23#3'Top'#3#180#0#5'Width'#3
+#219#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2
+#2#19'BorderSpacing.Right'#2#4#20'BorderSpacing.Bottom'#2#16#8'OnChange'#7#11
+'InfoChanged'#8'TabOrder'#2#7#0#0#0#9'TGroupBox'#9'GroupBox2'#22'AnchorSideL'
+'eft.Control'#7#9'GroupBox1'#21'AnchorSideTop.Control'#7#9'GroupBox1'#18'Anc'
+'horSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'GroupBox1'
+#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2'C'#3'Top'#3
+#131#1#5'Width'#3#28#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoS'
+'ize'#9#17'BorderSpacing.Top'#2#6#7'Caption'#6#13'Generate Code'#12'ClientHe'
+'ight'#2'/'#11'ClientWidth'#3#24#2#16'ParentBackground'#8#8'TabOrder'#2#4#0
+#12'TSpeedButton'#13'RegCodeCopySb'#21'AnchorSideTop.Control'#7#11'GenerateB'
+'tn'#18'AnchorSideTop.Side'#7#9'asrCenter'#23'AnchorSideRight.Control'#7#9'G'
+'roupBox2'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#238#1#6'Height'
+#2#24#4'Hint'#6#22'Copy code to clipboard'#3'Top'#2#6#5'Width'#2#26#7'Anchor'
+'s'#11#5'akTop'#7'akRight'#0#19'BorderSpacing.Right'#2#16#10'Glyph.Data'#10
+'F'#1#0#0'B'#1#0#0'BMB'#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0
+#4#0#0#0#0#0#204#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0
+#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0#128#128#128#0#192#192
+#192#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0#255#255#0#0#255
+#255#255#0#136#136#136#136#136#136#136#136#128#0#0#0#136#136#136#136#136#136
,#136#136#128#0#0#0#136#136#136#132'DDDD'#128#0#0#0#136#136#136#132#255#255
+#255#244#128#0#0#0#136#136#136#132#240#0#0#244#128#0#0#0#128#0#0#4#255#255
+#255#244#128#0#0#0#128#255#255#244#240#0#0#244#128#0#0#0#128#240#0#4#255#255
+#255#244#128#0#0#0#128#255#255#244#240#15'DD'#128#0#0#0#128#240#0#4#255#255
+'OH'#128#0#0#0#128#255#255#244#255#255'D'#136#128#0#0#0#128#240#15#4'DDH'#136
+#128#0#0#0#128#255#255#15#8#136#136#136#128#0#0#0#128#255#255#0#136#136#136
+#136#128#0#0#0#128#0#0#8#136#136#136#136#128#0#0#0#136#136#136#136#136#136
+#136#136#128#0#0#0#136#136#136#136#136#136#136#136#128#0#0#0#7'OnClick'#7#18
+'RegCodeCopySbClick'#0#0#7'TButton'#11'GenerateBtn'#22'AnchorSideLeft.Contro'
+'l'#7#9'GroupBox2'#21'AnchorSideTop.Control'#7#9'GroupBox2'#4'Left'#2#8#6'He'
+'ight'#2#25#4'Hint'#6#13'Generate code'#3'Top'#2#6#5'Width'#2'M'#18'BorderSp'
+'acing.Left'#2#8#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Bottom'#2#16#25
+'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#9'&Generate'#7'Default'#9#7'OnC'
+'lick'#7#16'GenerateBtnClick'#8'TabOrder'#2#0#0#0#5'TEdit'#9'RegCodeEd'#22'A'
+'nchorSideLeft.Control'#7#11'GenerateBtn'#19'AnchorSideLeft.Side'#7#9'asrBot'
+'tom'#21'AnchorSideTop.Control'#7#11'GenerateBtn'#18'AnchorSideTop.Side'#7#9
+'asrCenter'#23'AnchorSideRight.Control'#7#13'RegCodeCopySb'#4'Left'#2'a'#6'H'
+'eight'#2#23#3'Top'#2#7#5'Width'#3#137#1#7'Anchors'#11#5'akTop'#6'akLeft'#7
+'akRight'#0#18'BorderSpacing.Left'#2#12#19'BorderSpacing.Right'#2#4#20'Borde'
+'rSpacing.Bottom'#2#16#8'OnChange'#7#11'InfoChanged'#8'TabOrder'#2#1#0#0#0#0
]);

View File

@ -41,33 +41,14 @@ unit qonguard2;
interface interface
uses uses
//{$IFDEF MSWINDOWS} {AH.01} LCLIntf,
// Windows,
// Messages, {AH.01}
//{$ENDIF} {AH.01}
//{$IFDEF UsingCLX} {AH.01}
// Types, {AH.01}
//{$ENDIF} {AH.01}
LCLIntf,
LResources,
//{$IFDEF LINUX} {AH.01}
// Libc, {AH.01}
//{$ENDIF} {AH.01}
SysUtils, Classes, Graphics, Controls, Forms, Dialogs, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, StdCtrls, Buttons, ComCtrls,
ogconst, ogconst,
ognetwrk, ognetwrk,
ogutil, ogutil,
onguard, onguard,
qonguard3; {AH.01} qonguard3;
(*
{$IFDEF MSWINDOWS} {AH.01}
const
OGM_CHECK = WM_USER + 100;
OGM_QUIT = WM_USER + 101;
{$ENDIF} {AH.01}
*)
type type
@ -193,7 +174,7 @@ var
implementation implementation
{$R *.lfm}
procedure TCodeGenerateFrm.FormCreate(Sender: TObject); procedure TCodeGenerateFrm.FormCreate(Sender: TObject);
var var
@ -240,26 +221,18 @@ begin
case CodesNbk.ActivePageIndex of case CodesNbk.ActivePageIndex of
0 : begin 0 : begin
try if not TryStrToDate(StartDateEd.Text, D1) then
D1 := StrToDate(StartDateEd.Text); begin
except StartDateEd.SetFocus;
on EConvertError do begin MessageDlg(SCInvalidStartDate, mtError, [mbOK], 0);
ShowMessage(SCInvalidStartDate); Exit;
StartDateEd.SetFocus;
Exit;
end else
raise;
end; end;
try if not TryStrToDate(EndDateEd.Text, D2) then
D2 := StrToDate(EndDateEd.Text); begin
except EndDateEd.SetFocus;
on EConvertError do begin MessageDlg(SCInvalidStartDate, mtError, [mbOK], 0);
ShowMessage(SCInvalidStartDate); Exit;
EndDateEd.SetFocus;
Exit;
end else
raise;
end; end;
InitDateCode(K, Trunc(D1), Trunc(D2), FCode); InitDateCode(K, Trunc(D1), Trunc(D2), FCode);
@ -270,58 +243,47 @@ begin
StartDateEd.Text := OgFormatDate(Work.FirstDate+BaseDate); {!!.09} StartDateEd.Text := OgFormatDate(Work.FirstDate+BaseDate); {!!.09}
EndDateEd.Text := OgFormatDate(Work.EndDate+BaseDate); {!!.09} EndDateEd.Text := OgFormatDate(Work.EndDate+BaseDate); {!!.09}
end; end;
1 : begin 1 : begin
try if not TryStrToDate(DaysExpiresEd.Text, D1) then
D1 := StrToDate(DaysExpiresEd.Text); begin
except DaysExpiresEd.SetFocus;
on EConvertError do begin MessageDlg(SCInvalidExDate, mtError, [mbOK], 0);
ShowMessage(SCInvalidExDate); exit;
DaysExpiresEd.SetFocus;
Exit;
end else
raise;
end; end;
InitDaysCode(K, StrToIntDef(DaysCountEd.Text, 0), D1, FCode); InitDaysCode(K, StrToIntDef(DaysCountEd.Text, 0), D1, FCode);
end; end;
2 : begin 2 : begin
try if not TryStrToDate(RegExpiresEd.Text, D1) then
D1 := StrToDate(RegExpiresEd.Text); begin
except RegExpiresEd.SetFocus;
on EConvertError do begin MessageDlg(SCInvalidExDate, mtError, [mbOK], 0);
ShowMessage(SCInvalidExDate); Exit;
RegExpiresEd.SetFocus;
Exit;
end else
raise;
end; end;
InitRegCode(K, RegStrEd.Text, D1, FCode); InitRegCode(K, RegStrEd.Text, D1, FCode);
end; end;
3 : begin 3 : begin
try if not TryStrToDate(SerialExpiresEd.Text, D1) then
D1 := StrToDate(SerialExpiresEd.Text); begin
except SerialExpiresEd.SetFocus;
on EConvertError do begin MessageDlg(SCInvalidExDate, mtError, [mbOK], 0);
ShowMessage(SCInvalidExDate); Exit;
SerialExpiresEd.SetFocus;
Exit;
end else
raise;
end; end;
InitSerialNumberCode(K, StrToIntDef(SerialNumberEd.Text, 0), D1, FCode); InitSerialNumberCode(K, StrToIntDef(SerialNumberEd.Text, 0), D1, FCode);
end; end;
4 : begin 4 : begin
try if not TryStrToDate(UsageExpiresEd.Text, D1) then
D1 := StrToDate(UsageExpiresEd.Text); begin
except UsageExpiresEd.SetFocus;
on EConvertError do begin MessageDlg(SCInvalidExDate, mtError, [mbOk], 0);
ShowMessage(SCInvalidExDate); Exit;
UsageExpiresEd.SetFocus;
Exit;
end else
raise;
end; end;
InitUsageCode(K, StrToIntDef(UsageCountEd.Text, 0), D1, FCode); InitUsageCode(K, StrToIntDef(UsageCountEd.Text, 0), D1, FCode);
end; end;
5 : begin 5 : begin
I := StrToIntDef(NetworkSlotsEd.Text, 2); I := StrToIntDef(NetworkSlotsEd.Text, 2);
if I < 1 then {!!.08} if I < 1 then {!!.08}
@ -329,21 +291,17 @@ begin
NetworkSlotsEd.Text := IntToStr(I); NetworkSlotsEd.Text := IntToStr(I);
EncodeNAFCountCode(K, I, FCode); EncodeNAFCountCode(K, I, FCode);
end; end;
6 : begin 6 : begin
try if not TryStrToDate(SpecialExpiresEd.Text, D1) then
D1 := StrToDate(SpecialExpiresEd.Text); begin
except SpecialExpiresEd.SetFocus;
on EConvertError do begin MessageDlg(SCInvalidExDate, mtError, [mbOK], 0);
ShowMessage(SCInvalidExDate); Exit;
SpecialExpiresEd.SetFocus;
Exit;
end else
raise;
end; end;
InitSpecialCode(K, StrToIntDef(SpecialDataEd.Text, 0), D1, FCode); InitSpecialCode(K, StrToIntDef(SpecialDataEd.Text, 0), D1, FCode);
end; end;
end; end;
RegCodeEd.Text := BufferToHex(FCode, SizeOf(FCode)); RegCodeEd.Text := BufferToHex(FCode, SizeOf(FCode));
end else end else
MessageDlg(SCInvalidKeyOrModifier, mtError, [mbOK], 0); MessageDlg(SCInvalidKeyOrModifier, mtError, [mbOK], 0);
@ -458,9 +416,8 @@ begin
ModDateEd.Color := clBtnFace; ModDateEd.Color := clBtnFace;
if DateModifierCb.Checked then begin if DateModifierCb.Checked then begin
try if not TryStrToDate(ModDateEd.Text, D) then
D := StrToDate(ModDateEd.Text); begin
except
{ignore errors and don't generate modifier} {ignore errors and don't generate modifier}
D := 0; D := 0;
end; end;
@ -491,7 +448,9 @@ end;
procedure TCodeGenerateFrm.DateEdKeyPress(Sender: TObject; var Key: Char); procedure TCodeGenerateFrm.DateEdKeyPress(Sender: TObject; var Key: Char);
begin begin
if (not (Key in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', DateSeparator])) and (not (Key < #32)) then begin if (not (Key in ['0'..'9', FormatSettings.DateSeparator])) and
(not (Key < #32)) then
begin
Beep(); Beep();
Key := #0; Key := #0;
end; end;
@ -586,53 +545,12 @@ begin
Value := FKey; Value := FKey;
end; end;
(* procedure TCodeGenerateFrm.OGMQuit;
{$IFDEF MSWINDOWS} {AH.01}
procedure TCodeGenerateFrm.OGMQuit(var Msg : TMessage);
begin
ModalResult := mrCancel;
end;
{$ELSE} {AH.01}
*)
procedure TCodeGenerateFrm.OGMQuit; {AH.01}
begin begin
ModalResult := mrCancel; ModalResult := mrCancel;
end; end;
procedure TCodeGenerateFrm.OGMCheck;
(*
{$IFDEF MSWINDOWS} {AH.01}
procedure TCodeGenerateFrm.OGMCheck(var Msg : TMessage);
var
F : TKeyMaintFrm;
begin
if not HexToBuffer(BlockKeyEd.Text, FKey, SizeOf(FKey)) then begin
{get a key}
F := TKeyMaintFrm.Create(Self);
try
F.SetKey(FKey);
F.KeyType := ktRandom;
F.KeyFileName := FKeyFileName;
F.ShowHint := ShowHint;
if F.ShowModal = mrOK then begin
F.GetKey(FKey);
BlockKeyEd.Text := BufferToHex(FKey, SizeOf(FKey));
if HexStringIsZero(BlockKeyEd.Text)then
BlockKeyEd.Text := '';
FKeyFileName := F.KeyFileName;
InfoChanged(Self);
end else
PostMessage(HWND(Handle), OGM_QUIT, 0, 0);
finally
F.Free;
end;
end;
end;
{$ELSE} {AH.01}
*)
procedure TCodeGenerateFrm.OGMCheck; {AH.01}
var var
F : TKeyMaintFrm; F : TKeyMaintFrm;
begin begin
@ -659,7 +577,6 @@ begin
end; end;
end; end;
procedure TCodeGenerateFrm.SetKey(Value : TKey); procedure TCodeGenerateFrm.SetKey(Value : TKey);
begin begin
FKey := Value; FKey := Value;
@ -676,8 +593,5 @@ begin
end; end;
end; end;
initialization
{$I qonguard2.lrs}
end. end.

View File

@ -26,7 +26,7 @@ object KeyMaintFrm: TKeyMaintFrm
Caption = 'OK' Caption = 'OK'
Default = True Default = True
ModalResult = 1 ModalResult = 1
TabOrder = 0 TabOrder = 3
end end
object CancelBtn: TBitBtn object CancelBtn: TBitBtn
AnchorSideTop.Control = GroupBox1 AnchorSideTop.Control = GroupBox1
@ -43,7 +43,7 @@ object KeyMaintFrm: TKeyMaintFrm
BorderSpacing.Bottom = 8 BorderSpacing.Bottom = 8
Caption = 'Cancel' Caption = 'Cancel'
ModalResult = 2 ModalResult = 2
TabOrder = 1 TabOrder = 4
end end
object FileNameGb: TGroupBox object FileNameGb: TGroupBox
AnchorSideLeft.Control = Owner AnchorSideLeft.Control = Owner
@ -62,7 +62,7 @@ object KeyMaintFrm: TKeyMaintFrm
ClientHeight = 39 ClientHeight = 39
ClientWidth = 454 ClientWidth = 454
Constraints.MinWidth = 450 Constraints.MinWidth = 450
TabOrder = 2 TabOrder = 0
object OpenFileSb: TSpeedButton object OpenFileSb: TSpeedButton
AnchorSideRight.Control = OpenBtn AnchorSideRight.Control = OpenBtn
Left = 326 Left = 326
@ -130,7 +130,7 @@ object KeyMaintFrm: TKeyMaintFrm
BorderSpacing.Bottom = 8 BorderSpacing.Bottom = 8
Caption = '&Open' Caption = '&Open'
OnClick = OpenBtnClick OnClick = OpenBtnClick
TabOrder = 0 TabOrder = 1
end end
object FileNameEd: TEdit object FileNameEd: TEdit
AnchorSideLeft.Control = FileNameGb AnchorSideLeft.Control = FileNameGb
@ -142,7 +142,7 @@ object KeyMaintFrm: TKeyMaintFrm
Width = 310 Width = 310
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 8 BorderSpacing.Around = 8
TabOrder = 1 TabOrder = 0
Text = 'onguard.ini' Text = 'onguard.ini'
end end
end end
@ -161,7 +161,7 @@ object KeyMaintFrm: TKeyMaintFrm
Caption = 'A&pplications' Caption = 'A&pplications'
ClientHeight = 164 ClientHeight = 164
ClientWidth = 454 ClientWidth = 454
TabOrder = 3 TabOrder = 1
object AddBtn: TButton object AddBtn: TButton
AnchorSideLeft.Control = ProductsLb AnchorSideLeft.Control = ProductsLb
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
@ -176,7 +176,7 @@ object KeyMaintFrm: TKeyMaintFrm
BorderSpacing.InnerBorder = 4 BorderSpacing.InnerBorder = 4
Caption = '&Add...' Caption = '&Add...'
OnClick = AddBtnClick OnClick = AddBtnClick
TabOrder = 0 TabOrder = 1
end end
object EditBtn: TButton object EditBtn: TButton
AnchorSideLeft.Control = AddBtn AnchorSideLeft.Control = AddBtn
@ -192,7 +192,7 @@ object KeyMaintFrm: TKeyMaintFrm
BorderSpacing.InnerBorder = 4 BorderSpacing.InnerBorder = 4
Caption = '&Edit...' Caption = '&Edit...'
OnClick = EditBtnClick OnClick = EditBtnClick
TabOrder = 1 TabOrder = 2
end end
object DeleteBtn: TButton object DeleteBtn: TButton
AnchorSideLeft.Control = AddBtn AnchorSideLeft.Control = AddBtn
@ -208,7 +208,7 @@ object KeyMaintFrm: TKeyMaintFrm
BorderSpacing.InnerBorder = 4 BorderSpacing.InnerBorder = 4
Caption = '&Delete' Caption = '&Delete'
OnClick = DeleteBtnClick OnClick = DeleteBtnClick
TabOrder = 2 TabOrder = 3
end end
object ProductsLb: TListBox object ProductsLb: TListBox
AnchorSideLeft.Control = ProductsGb AnchorSideLeft.Control = ProductsGb
@ -220,7 +220,7 @@ object KeyMaintFrm: TKeyMaintFrm
BorderSpacing.Around = 8 BorderSpacing.Around = 8
ItemHeight = 0 ItemHeight = 0
OnClick = ProductsLbClick OnClick = ProductsLbClick
TabOrder = 3 TabOrder = 0
end end
end end
object GroupBox1: TGroupBox object GroupBox1: TGroupBox
@ -239,7 +239,7 @@ object KeyMaintFrm: TKeyMaintFrm
Caption = '&Key' Caption = '&Key'
ClientHeight = 74 ClientHeight = 74
ClientWidth = 454 ClientWidth = 454
TabOrder = 4 TabOrder = 2
object CopyBlockKeySb: TSpeedButton object CopyBlockKeySb: TSpeedButton
AnchorSideTop.Control = BlockKeyEd AnchorSideTop.Control = BlockKeyEd
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter

View File

@ -1,183 +0,0 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TKeyMaintFrm','FORMDATA',[
'TPF0'#12'TKeyMaintFrm'#11'KeyMaintFrm'#4'Left'#3#240#0#6'Height'#3#147#1#3'T'
+'op'#3#219#0#5'Width'#3#227#1#18'HorzScrollBar.Page'#3#232#1#18'VertScrollBa'
+'r.Page'#3#157#1#13'ActiveControl'#7#5'OKBtn'#8'AutoSize'#9#11'BorderIcons'
+#11#12'biSystemMenu'#10'biMinimize'#0#7'Caption'#6#15'Key Maintenance'#12'Cl'
+'ientHeight'#3#147#1#11'ClientWidth'#3#227#1#8'OnCreate'#7#10'FormCreate'#8
+'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#7'2.3.0.0'#0#7'TBitBtn'#5'O'
+'KBtn'#21'AnchorSideTop.Control'#7#9'CancelBtn'#23'AnchorSideRight.Control'#7
+#9'CancelBtn'#4'Left'#3'6'#1#6'Height'#2#25#3'Top'#3'k'#1#5'Width'#2'K'#7'An'
+'chors'#11#5'akTop'#7'akRight'#0#20'BorderSpacing.Bottom'#2#8#7'Caption'#6#2
+'OK'#7'Default'#9#11'ModalResult'#2#1#8'TabOrder'#2#0#0#0#7'TBitBtn'#9'Cance'
+'lBtn'#21'AnchorSideTop.Control'#7#9'GroupBox1'#18'AnchorSideTop.Side'#7#9'a'
+'srBottom'#23'AnchorSideRight.Control'#7#10'FileNameGb'#20'AnchorSideRight.S'
+'ide'#7#9'asrBottom'#4'Left'#3#133#1#6'Height'#2#25#3'Top'#3'k'#1#5'Width'#2
+'K'#7'Anchors'#11#5'akTop'#7'akRight'#0#18'BorderSpacing.Left'#2#4#17'Border'
+'Spacing.Top'#2#8#20'BorderSpacing.Bottom'#2#8#7'Caption'#6#6'Cancel'#11'Mod'
+'alResult'#2#2#8'TabOrder'#2#1#0#0#9'TGroupBox'#10'FileNameGb'#22'AnchorSide'
+'Left.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#23'AnchorSide'
+'Right.Control'#7#10'ProductsGb'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'L'
+'eft'#2#6#6'Height'#2';'#3'Top'#2#6#5'Width'#3#202#1#18'BorderSpacing.Left'#2
+#6#17'BorderSpacing.Top'#2#6#19'BorderSpacing.Right'#2#6#20'BorderSpacing.Bo'
+'ttom'#2#6#7'Caption'#6#10'&File name'#12'ClientHeight'#2''''#11'ClientWidth'
+#3#198#1#20'Constraints.MinWidth'#3#194#1#8'TabOrder'#2#2#0#12'TSpeedButton'
+#10'OpenFileSb'#23'AnchorSideRight.Control'#7#7'OpenBtn'#4'Left'#3'F'#1#6'He'
+'ight'#2#24#4'Hint'#6#25'Find key maintenance file'#3'Top'#2#6#5'Width'#2#26
+#7'Anchors'#11#5'akTop'#7'akRight'#0#19'BorderSpacing.Right'#2#4#10'Glyph.Da'
+'ta'#10'*'#5#0#0'&'#5#0#0'BM&'#5#0#0#0#0#0#0'6'#4#0#0'('#0#0#0#16#0#0#0#15#0
+#0#0#1#0#8#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128
+#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0#192#192#192#0#192
+#220#192#0#240#200#164#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#240#251#255#0#164#160#160#0#128#128#128#0#0#0#255#0#0#255#0#0#0
+#255#255#0#255#0#0#0#255#0#255#0#255#255#0#0#255#255#255#0#7#7#7#7#7#7#7#7#7
+#7#7#7#7#7#7#7#0#0#0#0#0#0#0#0#0#0#0#7#7#7#7#7#0#0#3#3#3#3#3#3#3#3#3#0#7#7#7
+#7#0#251#0#3#3#3#3#3#3#3#3#3#0#7#7#7#0#255#251#0#3#3#3#3#3#3#3#3#3#0#7#7#0
+#251#255#251#0#3#3#3#3#3#3#3#3#3#0#7#0#255#251#255#251#0#0#0#0#0#0#0#0#0#0#0
+#0#251#255#251#255#251#255#251#255#251#0#7#7#7#7#7#0#255#251#255#251#255#251
+#255#251#255#0#7#7#7#7#7#0#251#255#251#0#0#0#0#0#0#0#7#7#7#7#7#7#0#0#0#7#7#7
+#7#7#7#7#7#0#0#0#7#7#7#7#7#7#7#7#7#7#7#7#7#7#0#0#7#7#7#7#7#7#7#7#7#0#7#7#7#0
+#7#0#7#7#7#7#7#7#7#7#7#7#0#0#0#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7'OnC'
+'lick'#7#13'OpenFileClick'#0#0#7'TBitBtn'#7'OpenBtn'#23'AnchorSideRight.Cont'
+'rol'#7#10'FileNameGb'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3'd'#1
,#6'Height'#2#25#3'Top'#2#6#5'Width'#2'Z'#7'Anchors'#11#5'akTop'#7'akRight'#0
+#19'BorderSpacing.Right'#2#8#20'BorderSpacing.Bottom'#2#8#7'Caption'#6#5'&Op'
+'en'#7'OnClick'#7#12'OpenBtnClick'#8'TabOrder'#2#0#0#0#5'TEdit'#10'FileNameE'
+'d'#22'AnchorSideLeft.Control'#7#10'FileNameGb'#21'AnchorSideTop.Control'#7
+#10'FileNameGb'#23'AnchorSideRight.Control'#7#10'OpenFileSb'#4'Left'#2#8#6'H'
+'eight'#2#23#3'Top'#2#8#5'Width'#3'6'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'a'
+'kRight'#0#20'BorderSpacing.Around'#2#8#8'TabOrder'#2#1#4'Text'#6#11'onguard'
+'.ini'#0#0#0#9'TGroupBox'#10'ProductsGb'#22'AnchorSideLeft.Control'#7#10'Fil'
+'eNameGb'#21'AnchorSideTop.Control'#7#10'FileNameGb'#18'AnchorSideTop.Side'#7
+#9'asrBottom'#23'AnchorSideRight.Control'#7#10'FileNameGb'#20'AnchorSideRigh'
+'t.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#3#184#0#3'Top'#2'G'#5'Width'#3
+#202#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#9#7'Caption'
+#6#13'A&pplications'#12'ClientHeight'#3#164#0#11'ClientWidth'#3#198#1#8'TabO'
+'rder'#2#3#0#7'TButton'#6'AddBtn'#22'AnchorSideLeft.Control'#7#10'ProductsLb'
+#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#10'Produ'
+'ctsLb'#4'Left'#3'g'#1#6'Height'#2#25#4'Hint'#6#25'Add a new product and key'
+#3'Top'#2#8#5'Width'#2'Z'#18'BorderSpacing.Left'#2#8#19'BorderSpacing.Right'
+#2#8#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#7'&Add...'#7'OnClick'#7
+#11'AddBtnClick'#8'TabOrder'#2#0#0#0#7'TButton'#7'EditBtn'#22'AnchorSideLeft'
+'.Control'#7#6'AddBtn'#21'AnchorSideTop.Control'#7#6'AddBtn'#18'AnchorSideTo'
+'p.Side'#7#9'asrBottom'#4'Left'#3'g'#1#6'Height'#2#25#4'Hint'#6#25'Edit the '
+'selected product'#3'Top'#2'1'#5'Width'#2'Z'#17'BorderSpacing.Top'#2#16#19'B'
+'orderSpacing.Right'#2#8#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#8'&E'
+'dit...'#7'OnClick'#7#12'EditBtnClick'#8'TabOrder'#2#1#0#0#7'TButton'#9'Dele'
+'teBtn'#22'AnchorSideLeft.Control'#7#6'AddBtn'#21'AnchorSideTop.Control'#7#7
+'EditBtn'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3'g'#1#6'Height'#2#25
+#4'Hint'#6#27'Remove the selected product'#3'Top'#2'Z'#5'Width'#2'Z'#17'Bord'
+'erSpacing.Top'#2#16#19'BorderSpacing.Right'#2#8#25'BorderSpacing.InnerBorde'
+'r'#2#4#7'Caption'#6#7'&Delete'#7'OnClick'#7#14'DeleteBtnClick'#8'TabOrder'#2
+#2#0#0#8'TListBox'#10'ProductsLb'#22'AnchorSideLeft.Control'#7#10'ProductsGb'
+#21'AnchorSideTop.Control'#7#10'ProductsGb'#4'Left'#2#8#6'Height'#3#148#0#3
+'Top'#2#8#5'Width'#3'W'#1#20'BorderSpacing.Around'#2#8#10'ItemHeight'#2#0#7
+'OnClick'#7#15'ProductsLbClick'#8'TabOrder'#2#3#0#0#0#9'TGroupBox'#9'GroupBo'
+'x1'#22'AnchorSideLeft.Control'#7#10'ProductsGb'#21'AnchorSideTop.Control'#7
+#10'ProductsGb'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Con'
+'trol'#7#10'ProductsGb'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#6#6
+'Height'#2'^'#3'Top'#3#5#1#5'Width'#3#202#1#7'Anchors'#11#5'akTop'#6'akLeft'
+#7'akRight'#0#8'AutoSize'#9#17'BorderSpacing.Top'#2#6#7'Caption'#6#4'&Key'#12
+'ClientHeight'#2'J'#11'ClientWidth'#3#198#1#8'TabOrder'#2#4#0#12'TSpeedButto'
+'n'#14'CopyBlockKeySb'#21'AnchorSideTop.Control'#7#10'BlockKeyEd'#18'AnchorS'
+'ideTop.Side'#7#9'asrCenter'#23'AnchorSideRight.Control'#7#10'KeyPasteSb'#4
+'Left'#3#134#1#6'Height'#2#24#4'Hint'#6#21'Copy key to clipboard'#3'Top'#2#7
+#5'Width'#2#26#7'Anchors'#11#5'akTop'#7'akRight'#0#19'BorderSpacing.Right'#2
+#4#10'Glyph.Data'#10'F'#1#0#0'B'#1#0#0'BMB'#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0
+#17#0#0#0#17#0#0#0#1#0#4#0#0#0#0#0#204#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0
+#128#128#128#0#192#192#192#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0
+#255#0#255#255#0#0#255#255#255#0#136#136#136#136#136#136#136#136#128#0#0#0
+#136#136#136#136#136#136#136#136#128#0#0#0#136#136#136#132'DDDD'#128#0#0#0
+#136#136#136#132#255#255#255#244#128#0#0#0#136#136#136#132#240#0#0#244#128#0
+#0#0#128#0#0#4#255#255#255#244#128#0#0#0#128#255#255#244#240#0#0#244#128#0#0
+#0#128#240#0#4#255#255#255#244#128#0#0#0#128#255#255#244#240#15'DD'#128#0#0#0
+#128#240#0#4#255#255'OH'#128#0#0#0#128#255#255#244#255#255'D'#136#128#0#0#0
+#128#240#15#4'DDH'#136#128#0#0#0#128#255#255#15#8#136#136#136#128#0#0#0#128
+#255#255#0#136#136#136#136#128#0#0#0#128#0#0#8#136#136#136#136#128#0#0#0#136
+#136#136#136#136#136#136#136#128#0#0#0#136#136#136#136#136#136#136#136#128#0
+#0#0#7'OnClick'#7#19'CopyBlockKeySbClick'#0#0#12'TSpeedButton'#10'KeyPasteSb'
+#21'AnchorSideTop.Control'#7#10'BlockKeyEd'#18'AnchorSideTop.Side'#7#9'asrCe'
+'nter'#23'AnchorSideRight.Control'#7#9'GroupBox1'#20'AnchorSideRight.Side'#7
+#9'asrBottom'#4'Left'#3#164#1#6'Height'#2#24#4'Hint'#6#20'Paste from clipboa'
+'rd'#3'Top'#2#7#5'Width'#2#26#7'Anchors'#11#5'akTop'#7'akRight'#0#19'BorderS'
+'pacing.Right'#2#8#10'Glyph.Data'#10'F'#1#0#0'B'#1#0#0'BMB'#1#0#0#0#0#0#0'v'
+#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0#4#0#0#0#0#0#204#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0
,#128#128#0#0#192#192#192#0#128#128#128#0#0#0#255#0#0#255#0#0#0#255#255#0#255
+#0#0#0#255#0#255#0#255#255#0#0#255#255#255#0'"""""""" '#0#0#0'"""""""" '#0#0
+#0'"""DDDDD '#0#0#0' '#0#0'O'#255#255#255#244' '#0#0#0#8'88O'#0#0#0#244' '#0
+#0#0#3#131#131'O'#255#255#255#244' '#0#0#0#8'88O'#0#15'DD '#0#0#0#3#131#131
+'O'#255#255'OB '#0#0#0#8'88O'#255#255'D" '#0#0#0#3#131#131'DDD@" '#0#0#0#8'8'
+'88880" '#0#0#0#3#128#0#0#0#3#128'" '#0#0#0#8'0www'#8'0" '#0#0#0#3#131#11#0
+#176#131#128'" '#0#0#0' '#0#0#187#0#0#2'" '#0#0#0'"" '#0#2'""" '#0#0#0'"""""'
+'""" '#0#0#0#7'OnClick'#7#15'KeyPasteSbClick'#0#0#12'TSpeedButton'#13'CopyBy'
+'teKeySb'#22'AnchorSideLeft.Control'#7#14'CopyBlockKeySb'#21'AnchorSideTop.C'
+'ontrol'#7#10'BytesKeyEd'#4'Left'#3#134#1#6'Height'#2#24#4'Hint'#6#21'Copy k'
+'ey to clipboard'#3'Top'#2'+'#5'Width'#2#26#10'Glyph.Data'#10'F'#1#0#0'B'#1#0
+#0'BMB'#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0#4#0#0#0#0#0#204
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#128#128
+#0#128#0#0#0#128#0#128#0#128#128#0#0#128#128#128#0#192#192#192#0#0#0#255#0#0
+#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0#255#255#0#0#255#255#255#0#136#136
+#136#136#136#136#136#136#128#0#0#0#136#136#136#136#136#136#136#136#128#0#0#0
+#136#136#136#132'DDDD'#128#0#0#0#136#136#136#132#255#255#255#244#128#0#0#0
+#136#136#136#132#240#0#0#244#128#0#0#0#128#0#0#4#255#255#255#244#128#0#0#0
+#128#255#255#244#240#0#0#244#128#0#0#0#128#240#0#4#255#255#255#244#128#0#0#0
+#128#255#255#244#240#15'DD'#128#0#0#0#128#240#0#4#255#255'OH'#128#0#0#0#128
+#255#255#244#255#255'D'#136#128#0#0#0#128#240#15#4'DDH'#136#128#0#0#0#128#255
+#255#15#8#136#136#136#128#0#0#0#128#255#255#0#136#136#136#136#128#0#0#0#128#0
+#0#8#136#136#136#136#128#0#0#0#136#136#136#136#136#136#136#136#128#0#0#0#136
+#136#136#136#136#136#136#136#128#0#0#0#7'OnClick'#7#18'CopyByteKeySbClick'#0
+#0#12'TSpeedButton'#12'SpeedButton1'#22'AnchorSideLeft.Control'#7#10'KeyPast'
+'eSb'#21'AnchorSideTop.Control'#7#10'BytesKeyEd'#4'Left'#3#164#1#6'Height'#2
+#24#4'Hint'#6#20'Paste from clipboard'#3'Top'#2'+'#5'Width'#2#26#10'Glyph.Da'
+'ta'#10'F'#1#0#0'B'#1#0#0'BMB'#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0#17#0#0#0#17#0
+#0#0#1#0#4#0#0#0#0#0#204#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0#192#192#192#0
+#128#128#128#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0#255#255
+#0#0#255#255#255#0'"""""""" '#0#0#0'"""""""" '#0#0#0'"""DDDDD '#0#0#0' '#0#0
+'O'#255#255#255#244' '#0#0#0#8'88O'#0#0#0#244' '#0#0#0#3#131#131'O'#255#255
+#255#244' '#0#0#0#8'88O'#0#15'DD '#0#0#0#3#131#131'O'#255#255'OB '#0#0#0#8'8'
+'8O'#255#255'D" '#0#0#0#3#131#131'DDD@" '#0#0#0#8'888880" '#0#0#0#3#128#0#0#0
+#3#128'" '#0#0#0#8'0www'#8'0" '#0#0#0#3#131#11#0#176#131#128'" '#0#0#0' '#0#0
+#187#0#0#2'" '#0#0#0'"" '#0#2'""" '#0#0#0'"""""""" '#0#0#0#7'OnClick'#7#17'S'
+'peedButton1Click'#0#0#5'TEdit'#10'BlockKeyEd'#22'AnchorSideLeft.Control'#7#9
+'GroupBox1'#21'AnchorSideTop.Control'#7#9'GroupBox1'#23'AnchorSideRight.Cont'
+'rol'#7#13'CopyByteKeySb'#4'Left'#2#8#6'Height'#2#23#3'Top'#2#8#5'Width'#3'z'
+#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#8
+#17'BorderSpacing.Top'#2#8#19'BorderSpacing.Right'#2#4#8'TabOrder'#2#0#0#0#5
+'TEdit'#10'BytesKeyEd'#22'AnchorSideLeft.Control'#7#10'BlockKeyEd'#21'Anchor'
+'SideTop.Control'#7#10'BlockKeyEd'#18'AnchorSideTop.Side'#7#9'asrBottom'#23
+'AnchorSideRight.Control'#7#10'BlockKeyEd'#20'AnchorSideRight.Side'#7#9'asrB'
+'ottom'#4'Left'#2#8#6'Height'#2#23#3'Top'#2'+'#5'Width'#3'z'#1#7'Anchors'#11
+#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#12#20'BorderSpacing'
+'.Bottom'#2#8#8'TabOrder'#2#1#0#0#0#11'TOpenDialog'#11'OpenDialog1'#5'Title'
+#6#27'Select Key Maintenance File'#10'DefaultExt'#6#4'.ini'#6'Filter'#6'+INI'
+' Files (*.ini)|*.ini|All Files (*.*)|*.*'#11'FilterIndex'#2#0#7'Options'#11
+#15'ofPathMustExist'#0#4'Left'#3'('#1#3'Top'#3#128#0#0#0#0
]);

View File

@ -42,11 +42,11 @@ interface
uses uses
SysUtils, Classes, Controls, Forms, SysUtils, Classes, Controls, Forms,
Dialogs, StdCtrls, Buttons, IniFiles,LResources, Dialogs, StdCtrls, Buttons, IniFiles,
ogconst, ogconst,
ogutil, ogutil,
onguard, onguard,
qonguard1, //qonguard1,
qonguard4; qonguard4;
type type
@ -114,8 +114,7 @@ var
implementation implementation
{$R *.lfm}
procedure TKeyMaintFrm.FormCreate(Sender: TObject); procedure TKeyMaintFrm.FormCreate(Sender: TObject);
begin begin
@ -198,8 +197,8 @@ var
begin begin
I := ProductsLB.ItemIndex; {!!.07} I := ProductsLB.ItemIndex; {!!.07}
if (I > -1) then {!!.07} if (I > -1) then {!!.07}
if MessageDlg(SCDeleteQuery, mtConfirmation, if MessageDlg(SCDeleteQuery, mtConfirmation, [mbYes, mbNo], 0) = mrYes then
[mbYes, mbNo], 0) = mrYes then begin begin
IniFile := TIniFile.Create(KeyFileName); IniFile := TIniFile.Create(KeyFileName);
try try
IniFile.DeleteKey(OgKeySection, ProductsLb.Items[I]); {!!.07} IniFile.DeleteKey(OgKeySection, ProductsLb.Items[I]); {!!.07}
@ -354,8 +353,4 @@ begin
end; end;
initialization
{$I qonguard3.lrs}
end. end.

View File

@ -1,74 +0,0 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TEditProductFrm','FORMDATA',[
'TPF0'#15'TEditProductFrm'#14'EditProductFrm'#4'Left'#3#24#1#6'Height'#3#128#0
+#3'Top'#3'F'#1#5'Width'#3#4#2#18'HorzScrollBar.Page'#3#13#2#19'HorzScrollBar'
+'.Range'#3#9#2#18'VertScrollBar.Page'#2'm'#19'VertScrollBar.Range'#2'i'#13'A'
+'ctiveControl'#7#9'ProductEd'#8'AutoSize'#9#11'BorderIcons'#11#0#11'BorderSt'
+'yle'#7#8'bsDialog'#7'Caption'#6#19'Description and Key'#12'ClientHeight'#3
+#128#0#11'ClientWidth'#3#4#2#8'OnCreate'#7#10'FormCreate'#8'Position'#7#14'p'
+'oScreenCenter'#10'LCLVersion'#6#7'2.3.0.0'#0#6'TPanel'#6'Panel1'#22'AnchorS'
+'ideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#4'Left'#2#8
+#6'Height'#2'P'#3'Top'#2#8#5'Width'#3#245#1#8'AutoSize'#9#20'BorderSpacing.A'
+'round'#2#8#10'BevelOuter'#7#9'bvLowered'#12'ClientHeight'#2'P'#11'ClientWid'
+'th'#3#245#1#8'TabOrder'#2#0#0#12'TSpeedButton'#13'GenerateKeySb'#22'AnchorS'
+'ideLeft.Control'#7#10'KeyPasteSb'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21
+'AnchorSideTop.Control'#7#5'KeyEd'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'L'
+'eft'#3#202#1#6'Height'#2#24#4'Hint'#6#23'Generate encryption key'#3'Top'#2
+'+'#5'Width'#2#26#18'BorderSpacing.Left'#2#4#19'BorderSpacing.Right'#2#16#10
+'Glyph.Data'#10'F'#1#0#0'B'#1#0#0'BMB'#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0#17#0#0
+#0#17#0#0#0#1#0#4#0#0#0#0#0#204#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0#128#128
+#128#0#192#192#192#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0
+#255#255#0#0#255#255#255#0#136#136#136#136#136#136#136#136#128#0#0#0#136#136
+#136#136#136#136#136#136#128#0#0#0#136#136#136#132'DDDD'#128#0#0#0#136#136
+#136#132#255#255#255#244#128#0#0#0#136#136#136#132#240#0#0#244#128#0#0#0#128
+#0#0#4#255#255#255#244#128#0#0#0#128#255#255#244#240#0#0#244#128#0#0#0#128
+#240#0#4#255#255#255#244#128#0#0#0#128#255#255#244#240#15'DD'#128#0#0#0#128
+#240#0#4#255#255'OH'#128#0#0#0#128#255#255#244#255#255'D'#136#128#0#0#0#128
+#240#15#4'DDH'#136#128#0#0#0#128#255#255#15#8#136#136#136#128#0#0#0#128#255
+#255#0#136#136#136#136#128#0#0#0#128#0#0#8#136#136#136#136#128#0#0#0#136#136
+#136#136#136#136#136#136#128#0#0#0#136#136#136#136#136#136#136#136#128#0#0#0
+#7'OnClick'#7#18'GenerateKeySbClick'#0#0#12'TSpeedButton'#10'KeyPasteSb'#22
+'AnchorSideLeft.Control'#7#5'KeyEd'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21
+'AnchorSideTop.Control'#7#5'KeyEd'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'L'
+'eft'#3#172#1#6'Height'#2#24#4'Hint'#6#20'Paste from clipboard'#3'Top'#2'+'#5
+'Width'#2#26#18'BorderSpacing.Left'#2#4#10'Glyph.Data'#10'F'#1#0#0'B'#1#0#0
+'BMB'#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0#4#0#0#0#0#0#204#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#128#128#0
+#128#0#0#0#128#0#128#0#128#128#0#0#192#192#192#0#128#128#128#0#0#0#255#0#0
+#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0#255#255#0#0#255#255#255#0'"""""""'
+'" '#0#0#0'"""""""" '#0#0#0'"""DDDDD '#0#0#0' '#0#0'O'#255#255#255#244' '#0#0
+#0#8'88O'#0#0#0#244' '#0#0#0#3#131#131'O'#255#255#255#244' '#0#0#0#8'88O'#0
+#15'DD '#0#0#0#3#131#131'O'#255#255'OB '#0#0#0#8'88O'#255#255'D" '#0#0#0#3
+#131#131'DDD@" '#0#0#0#8'888880" '#0#0#0#3#128#0#0#0#3#128'" '#0#0#0#8'0www'
+#8'0" '#0#0#0#3#131#11#0#176#131#128'" '#0#0#0' '#0#0#187#0#0#2'" '#0#0#0'""'
+' '#0#2'""" '#0#0#0'"""""""" '#0#0#0#7'OnClick'#7#15'KeyPasteSbClick'#0#0#6
+'TLabel'#6'Label1'#22'AnchorSideLeft.Control'#7#6'Panel1'#21'AnchorSideTop.C'
+'ontrol'#7#9'ProductEd'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#13#6
+'Height'#2#15#3'Top'#2#17#5'Width'#2'?'#18'BorderSpacing.Left'#2#12#7'Captio'
+'n'#6#13'&Description:'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'
+#6'Label2'#22'AnchorSideLeft.Control'#7#6'Panel1'#21'AnchorSideTop.Control'#7
+#5'KeyEd'#4'Left'#2#13#6'Height'#2#15#3'Top'#2','#5'Width'#2#22#18'BorderSpa'
+'cing.Left'#2#12#7'Caption'#6#5'&Key:'#5'Color'#7#6'clNone'#11'ParentColor'#8
+#0#0#5'TEdit'#9'ProductEd'#22'AnchorSideLeft.Control'#7#6'Label1'#19'AnchorS'
+'ideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#6'Panel1'#4'Left'#2
+'T'#6'Height'#2#23#3'Top'#2#13#5'Width'#3'T'#1#18'BorderSpacing.Left'#2#8#17
+'BorderSpacing.Top'#2#12#8'OnChange'#7#11'InfoChanged'#8'TabOrder'#2#0#0#0#5
+'TEdit'#5'KeyEd'#22'AnchorSideLeft.Control'#7#9'ProductEd'#21'AnchorSideTop.'
+'Control'#7#9'ProductEd'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSide'
+'Right.Control'#7#9'ProductEd'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Lef'
+'t'#2'T'#6'Height'#2#23#3'Top'#2','#5'Width'#3'T'#1#7'Anchors'#11#5'akTop'#6
+'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#8#20'BorderSpacing.Bottom'#2#12
+#8'OnChange'#7#11'InfoChanged'#8'TabOrder'#2#1#0#0#0#7'TButton'#5'OKBtn'#21
+'AnchorSideTop.Control'#7#6'Panel1'#18'AnchorSideTop.Side'#7#9'asrBottom'#23
+'AnchorSideRight.Control'#7#9'CancelBtn'#4'Left'#3'c'#1#6'Height'#2#25#3'Top'
+#2'`'#5'Width'#2'K'#7'Anchors'#11#5'akTop'#7'akRight'#0#19'BorderSpacing.Rig'
+'ht'#2#4#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#2'OK'#7'Default'#9#11
,'ModalResult'#2#1#8'TabOrder'#2#1#0#0#7'TButton'#9'CancelBtn'#21'AnchorSideT'
+'op.Control'#7#6'Panel1'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSide'
+'Right.Control'#7#6'Panel1'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3
+#178#1#6'Height'#2#25#3'Top'#2'`'#5'Width'#2'K'#7'Anchors'#11#5'akTop'#7'akR'
+'ight'#0#20'BorderSpacing.Bottom'#2#8#25'BorderSpacing.InnerBorder'#2#4#6'Ca'
+'ncel'#9#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#2#0#0#0
]);

View File

@ -41,8 +41,9 @@ unit qonguard4;
interface interface
uses uses
SysUtils,Classes, Variants, Graphics, Controls, Forms, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ogutil, onguard, qonguard1, Buttons, ExtCtrls,LResources; Dialogs, StdCtrls, Buttons, ExtCtrls,
ogutil, onguard, qonguard1;
type type
TEditProductFrm = class(TForm) TEditProductFrm = class(TForm)
@ -86,7 +87,7 @@ var
implementation implementation
{$R *.lfm}
procedure TEditProductFrm.FormCreate(Sender: TObject); procedure TEditProductFrm.FormCreate(Sender: TObject);
begin begin
@ -97,6 +98,7 @@ procedure TEditProductFrm.InfoChanged(Sender: TObject);
var var
Work : TKey; Work : TKey;
begin begin
Work := Default(TKey);
OKBtn.Enabled := (Length(ProductEd.Text) > 0) and OKBtn.Enabled := (Length(ProductEd.Text) > 0) and
(HexToBuffer(KeyEd.Text, Work, SizeOf(Work))); (HexToBuffer(KeyEd.Text, Work, SizeOf(Work)));
end; end;
@ -108,7 +110,7 @@ end;
procedure TEditProductFrm.GenerateKeySbClick(Sender: TObject); procedure TEditProductFrm.GenerateKeySbClick(Sender: TObject);
var var
F : TKeyGenerateFrm; F: TKeyGenerateFrm;
begin begin
F := TKeyGenerateFrm.Create(Self); F := TKeyGenerateFrm.Create(Self);
try try
@ -151,8 +153,4 @@ begin
FKey := Value; FKey := Value;
end; end;
initialization
{$I qonguard4.lrs}
end. end.

View File

@ -1,42 +0,0 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TModifierFrm','FORMDATA',[
'TPF0'#12'TModifierFrm'#11'ModifierFrm'#4'Left'#3''''#1#6'Height'#3#179#0#3'T'
+'op'#3#224#0#5'Width'#3#177#1#13'ActiveControl'#7#12'NoModifierCb'#8'AutoSiz'
+'e'#9#11'BorderIcons'#11#12'biSystemMenu'#10'biMinimize'#0#7'Caption'#6#17'G'
+'enerate Modifier'#12'ClientHeight'#3#179#0#11'ClientWidth'#3#177#1#8'OnCrea'
+'te'#7#10'FormCreate'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#7'2.'
+'3.0.0'#0#7'TBitBtn'#5'OKBtn'#21'AnchorSideTop.Control'#7#9'CancelBtn'#23'An'
+'chorSideRight.Control'#7#9'CancelBtn'#4'Left'#3#238#0#6'Height'#2#25#3'Top'
+#2'v'#5'Width'#2'K'#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#19'Bor'
+'derSpacing.Right'#2#4#7'Caption'#6#2'OK'#20'Constraints.MinWidth'#2'K'#7'De'
+'fault'#9#11'ModalResult'#2#1#8'TabOrder'#2#1#0#0#7'TBitBtn'#9'CancelBtn'#21
+'AnchorSideTop.Control'#7#9'GroupBox1'#18'AnchorSideTop.Side'#7#9'asrBottom'
+#23'AnchorSideRight.Control'#7#9'GroupBox1'#20'AnchorSideRight.Side'#7#9'asr'
+'Bottom'#4'Left'#3'='#1#6'Height'#2#25#3'Top'#2'v'#5'Width'#2'K'#7'Anchors'
+#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#20'BorderSpacing.Bottom'#2#8#7'Capti'
+'on'#6#6'Cancel'#20'Constraints.MinWidth'#2'K'#11'ModalResult'#2#2#8'TabOrde'
+'r'#2#2#0#0#9'TGroupBox'#9'GroupBox1'#22'AnchorSideLeft.Control'#7#5'Owner'
+#21'AnchorSideTop.Control'#7#5'Owner'#4'Left'#2#8#6'Height'#2'f'#3'Top'#2#8#5
+'Width'#3#128#1#8'AutoSize'#9#20'BorderSpacing.Around'#2#8#7'Caption'#6#10'&'
+'Modifiers'#28'ChildSizing.LeftRightSpacing'#2#24#28'ChildSizing.TopBottomSp'
+'acing'#2#16#29'ChildSizing.HorizontalSpacing'#2#24#27'ChildSizing.VerticalS'
+'pacing'#2#8#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'
+#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.C'
+'ontrolsPerLine'#2#3#12'ClientHeight'#2'R'#11'ClientWidth'#3'|'#1#8'TabOrder'
+#2#0#0#9'TCheckBox'#12'NoModifierCb'#4'Left'#2#24#6'Height'#2#19#3'Top'#2#16
+#5'Width'#2'R'#7'Caption'#6#11'No modifier'#7'OnClick'#7#13'ModifierClick'#8
+'TabOrder'#2#0#0#0#9'TCheckBox'#17'MachineModifierCb'#4'Left'#3#130#0#6'Heig'
+'ht'#2#19#3'Top'#2#16#5'Width'#2'p'#7'Caption'#6#16'Machine modifier'#7'OnCl'
+'ick'#7#13'ModifierClick'#8'TabOrder'#2#1#0#0#9'TCheckBox'#14'DateModifierCb'
+#4'Left'#3#10#1#6'Height'#2#19#3'Top'#2#16#5'Width'#2'Z'#7'Caption'#6#13'Dat'
+'e modifier'#7'OnClick'#7#13'ModifierClick'#8'TabOrder'#2#2#0#0#5'TEdit'#10
+'ModifierEd'#4'Left'#2#24#6'Height'#2#23#3'Top'#2'+'#5'Width'#2'R'#8'OnChang'
+'e'#7#11'InfoChanged'#10'OnKeyPress'#7#18'ModifierEdKeyPress'#8'TabOrder'#2#3
+#0#0#9'TCheckBox'#16'UniqueModifierCb'#4'Left'#3#130#0#6'Height'#2#23#3'Top'
+#2'+'#5'Width'#2'p'#7'Caption'#6#15'Unique modifier'#7'OnClick'#7#13'Modifie'
+'rClick'#8'TabOrder'#2#4#0#0#5'TEdit'#9'ModDateEd'#4'Left'#3#10#1#6'Height'#2
+#23#4'Hint'#6#31'Code is invalid after this date'#3'Top'#2'+'#5'Width'#2'Z'#7
+'Enabled'#8#9'MaxLength'#2#10#8'OnChange'#7#13'ModifierClick'#10'OnKeyPress'
+#7#14'DateEdKeyPress'#8'TabOrder'#2#5#0#0#0#0
]);

View File

@ -69,8 +69,7 @@ type
implementation implementation
uses {$R *.lfm}
LResources;
procedure TModifierFrm.FormCreate(Sender: TObject); procedure TModifierFrm.FormCreate(Sender: TObject);
begin begin
@ -122,9 +121,8 @@ begin
ModDateEd.Color := clBtnFace; ModDateEd.Color := clBtnFace;
if DateModifierCb.Checked then begin if DateModifierCb.Checked then begin
try if not TryStrToDate(ModDateEd.Text, D) then
D := StrToDate(ModDateEd.Text); begin
except
{ignore errors and don't generate modifier} {ignore errors and don't generate modifier}
D := 0; D := 0;
end; end;
@ -157,7 +155,7 @@ end;
procedure TModifierFrm.DateEdKeyPress(Sender: TObject; var Key: Char); procedure TModifierFrm.DateEdKeyPress(Sender: TObject; var Key: Char);
const const
CIntChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '/']; CIntChars = ['0'..'9', '/'];
begin begin
if (not (Key in CIntChars)) and (not (Key < #32)) then begin if (not (Key in CIntChars)) and (not (Key < #32)) then begin
Beep; Beep;
@ -167,7 +165,7 @@ end;
procedure TModifierFrm.ModifierEdKeyPress(Sender: TObject; var Key: Char); procedure TModifierFrm.ModifierEdKeyPress(Sender: TObject; var Key: Char);
const const
CHexChars = ['$', 'A', 'B', 'C', 'D', 'E', 'F', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; CHexChars = ['$', 'A'..'F', '0'..'9'];
begin begin
if (not (Key in CHexChars)) and (not (Key < #32)) then begin if (not (Key in CHexChars)) and (not (Key < #32)) then begin
Beep; Beep;
@ -182,8 +180,4 @@ begin
end; end;
initialization
{$I qonguard6.lrs}
end. end.