You've already forked lazarus-ccr
154 lines
4.1 KiB
ObjectPascal
154 lines
4.1 KiB
ObjectPascal
![]() |
unit FIXNAF1;
|
||
|
|
||
|
interface
|
||
|
|
||
|
uses
|
||
|
IniFiles, SysUtils, Forms, Classes, Dialogs,
|
||
|
StdCtrls, Controls, ExtCtrls,Buttons,LResources,onguard, ognetwrk, ogutil;
|
||
|
|
||
|
type
|
||
|
|
||
|
{ TMainFrm }
|
||
|
|
||
|
TMainFrm = class(TForm)
|
||
|
GroupBox1: TGroupBox;
|
||
|
UpdateBt: TButton;
|
||
|
CreateBt: TButton;
|
||
|
ResetBt: TButton;
|
||
|
GroupBox2: TGroupBox;
|
||
|
Label1: TLabel;
|
||
|
Label2: TLabel;
|
||
|
Label3: TLabel;
|
||
|
TotalSlotsLb: TLabel;
|
||
|
LockedSlotsLb: TLabel;
|
||
|
InvalidSlotsLb: TLabel;
|
||
|
AccessCodeEd: TEdit;
|
||
|
Label4: TLabel;
|
||
|
Label5: TLabel;
|
||
|
DeleteBt: TButton;
|
||
|
FileNamePn: TPanel;
|
||
|
procedure FormCreate(Sender: TObject);
|
||
|
procedure UpdateBtClick(Sender: TObject);
|
||
|
procedure CreateBtClick(Sender: TObject);
|
||
|
procedure ResetBtClick(Sender: TObject);
|
||
|
procedure AccessCodeEdChange(Sender: TObject);
|
||
|
procedure DeleteBtClick(Sender: TObject);
|
||
|
private
|
||
|
{ Private declarations }
|
||
|
Key : TKey;
|
||
|
public
|
||
|
{ Public declarations }
|
||
|
function UpdateInfoLabels(const FileName: string): Boolean;
|
||
|
function NumberOfSlots(const Str: string): Integer;
|
||
|
end;
|
||
|
|
||
|
var
|
||
|
MainFrm: TMainFrm;
|
||
|
|
||
|
|
||
|
implementation
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
procedure TMainFrm.FormCreate(Sender: TObject);
|
||
|
const
|
||
|
{change these lines to match your application.}
|
||
|
{they must be hardcoded, do not use .ini files, or}
|
||
|
{you'll loose security.}
|
||
|
CKey : TKey = ($E5,$8F,$84,$D6,$92,$C9,$A4,$D8,$1A,$FA,$6F,$8D,$AB,$FC,$DF,$B4);
|
||
|
begin
|
||
|
Key := CKey;
|
||
|
|
||
|
{change the file name to match your application}
|
||
|
FileNamePn.Caption := 'EXNET.NAF';
|
||
|
|
||
|
UpdateBt.Enabled := FileExists(FileNamePn.Caption);
|
||
|
ResetBt.Enabled := FileExists(FileNamePn.Caption);
|
||
|
DeleteBt.Enabled := FileExists(FileNamePn.Caption);
|
||
|
end;
|
||
|
|
||
|
procedure TMainFrm.AccessCodeEdChange(Sender: TObject);
|
||
|
begin
|
||
|
CreateBt.Enabled := (NumberOfSlots(AccessCodeEd.Text) <> -1) and (FileNamePn.Caption <> '');
|
||
|
end;
|
||
|
|
||
|
procedure TMainFrm.UpdateBtClick(Sender: TObject);
|
||
|
begin
|
||
|
if not UpdateInfoLabels(FileNamePn.Caption) then
|
||
|
MessageDlg('Unable to read network access file.', mtError, [mbOK], 0);
|
||
|
end;
|
||
|
|
||
|
procedure TMainFrm.CreateBtClick(Sender: TObject);
|
||
|
begin
|
||
|
if (NumberOfSlots(AccessCodeEd.Text) <> -1) then
|
||
|
if not CreateNetAccessFile(FileNamePn.Caption, Key, NumberOfSlots(AccessCodeEd.Text)) then
|
||
|
MessageDlg('Unable to create network access file.', mtError, [mbOK], 0)
|
||
|
else
|
||
|
begin
|
||
|
if not UpdateInfoLabels(FileNamePn.Caption) then
|
||
|
MessageDlg('Unable to read network access file.', mtError, [mbOK], 0);
|
||
|
|
||
|
UpdateBt.Enabled := FileExists(FileNamePn.Caption);
|
||
|
ResetBt.Enabled := FileExists(FileNamePn.Caption);
|
||
|
DeleteBt.Enabled := FileExists(FileNamePn.Caption);
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
procedure TMainFrm.ResetBtClick(Sender: TObject);
|
||
|
begin
|
||
|
if not ResetNetAccessFile(FileNamePn.Caption, Key) then
|
||
|
MessageDlg('Unable to reset network access file.', mtError, [mbOK], 0)
|
||
|
else
|
||
|
if not UpdateInfoLabels(FileNamePn.Caption) then
|
||
|
MessageDlg('Unable read network access file.', mtError, [mbOK], 0);
|
||
|
end;
|
||
|
|
||
|
procedure TMainFrm.DeleteBtClick(Sender: TObject);
|
||
|
begin
|
||
|
if (MessageDlg('Are you sure you want to delete this network access file?',
|
||
|
mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
|
||
|
begin
|
||
|
DeleteFile(FileNamePn.Caption);
|
||
|
|
||
|
TotalSlotsLb.Caption := '0';
|
||
|
LockedSlotsLb.Caption := '0';
|
||
|
InvalidSlotsLb.Caption := '0';
|
||
|
|
||
|
UpdateBt.Enabled := FileExists(FileNamePn.Caption);
|
||
|
ResetBt.Enabled := FileExists(FileNamePn.Caption);
|
||
|
DeleteBt.Enabled := FileExists(FileNamePn.Caption);
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
function TMainFrm.UpdateInfoLabels(const FileName: string): Boolean;
|
||
|
var
|
||
|
NetAccessInfo: TNetAccessInfo;
|
||
|
begin
|
||
|
if GetNetAccessFileInfo(FileName, Key, NetAccessInfo) then begin
|
||
|
TotalSlotsLb.Caption := IntToStr(NetAccessInfo.Total);
|
||
|
LockedSlotsLb.Caption := IntToStr(NetAccessInfo.Locked);
|
||
|
InvalidSlotsLb.Caption := IntToStr(NetAccessInfo.Invalid);
|
||
|
Result := True;
|
||
|
end else
|
||
|
Result := False;
|
||
|
end;
|
||
|
|
||
|
function TMainFrm.NumberOfSlots(const Str: string): Integer;
|
||
|
var
|
||
|
Code : TCode;
|
||
|
begin
|
||
|
Result := -1;
|
||
|
if (Length(Str) = SizeOf(Code) * 2) then begin
|
||
|
HexToBuffer(Str, Code, SizeOf(Code));
|
||
|
Result := DecodeNAFCountCode(Key, Code);
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
|
||
|
initialization
|
||
|
{$i fixnaf1.lrs}
|
||
|
|
||
|
end.
|
||
|
|