CodeTyphon自带例子源码:限制运行日期
来源:互联网 发布:营养搭配软件 编辑:程序博客网 时间:2024/05/14 03:59
C:\codetyphon\CodeOcean\OnGuard\samples\exdys30
这个例子演示了直接在代码中写入超期日期。软件第一次运行时,生成ini文件并写入超期时间,例如2015-11-30,如果当前运行时间超过改时间,则提示并退出。
{********************************************************************** CodeOcean Demo for Package pl_OnGuard.pkg This unit is part of CodeTyphon Project (http://www.pilotlogic.com/)***********************************************************************}(* This program uses the TOgDaysCode component. The first time the program is run, the necessary information is created and stored in an INI file. In addition, the program is given a "drop dead" date, i.e., regardless of how many days the program has been used, it cannont be used after that date (2014-12-31). NOTE: *** This feature has now been disable in OnGuard *** InvalidCount is set to 3, user is allowed to 3 times break the rules, for example changing date back to execute program after trial period expired.*)unit Exdys30u;interfaceuses SysUtils, Classes, Controls, Forms, Dialogs,LResources, StdCtrls, Buttons, OnGuard,OgUtil,IniFiles;const CKey : TKey = ($E5,$8F,$84,$D6,$92,$C9,$A4,$D8, $1A,$FA,$6F,$8D,$AB,$FC,$DF,$B4);type { TForm1 } TForm1 = class(TForm) Memo1: TMemo; CloseBtn: TBitBtn; OgDaysCode1: TOgDaysCode; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure OgDaysCode1GetKey(Sender: TObject; var Key: TKey); procedure OgDaysCode1GetCode(Sender: TObject; var Code: TCode); procedure OgDaysCode1ChangeCode(Sender: TObject; Code: TCode); procedure OgDaysCode1Checked(Sender: TObject; Status: TCodeStatus); private codeinvalid : Boolean; public { Public declarations } TheDir : string; IniFile : TIniFile; end;var Form1: TForm1;implementation{==========================================================================}procedure TForm1.OgDaysCode1GetKey(Sender: TObject; var Key: TKey);begin Key := CKey;end;procedure TForm1.FormCreate(Sender: TObject);begin codeinvalid := false;end;{==========================================================================}procedure TForm1.OgDaysCode1GetCode(Sender: TObject; var Code: TCode);var S : string; Expires : TDateTime; L : integer;begin {force the INI file to be in the same directory as the application} TheDir := ExtractFilePath(ParamStr(0)); { L := Length(TheDir); if (L > 3) and (TheDir[L] <> '\') then TheDir := TheDir + '\';} {open Ini File} IniFile := TIniFile.Create(TheDir + 'Days30.INI'); try {try to read release code} S := IniFile.ReadString('Codes', 'DaysCode', 'NoCode'); {If default string returned, create code on the fly} if (S = 'NoCode') then begin { force absolute ("drop dead") expiration date of 2014-12-31 } Expires := EncodeDate(2015, 11, 30); InitDaysCode(CKey, 12, Expires, Code,3); {save string representation of release code to Ini File} S := BufferToHex(Code, SizeOf(Code)); IniFile.WriteString('Codes', 'DaysCode', S); end else {convert retrieved string to a code} HexToBuffer(S, Code, SizeOf(Code)); finally IniFile.Free; end;end;{==========================================================================}procedure TForm1.OgDaysCode1ChangeCode(Sender: TObject; Code: TCode);var S : string;begin if codeinvalid then Exit; IniFile := TIniFile.Create(TheDir + 'Days30.ini'); try {convert Code to string for writing to INI file} S := BufferToHex(Code, SizeOf(Code)); IniFile.WriteString('Codes', 'DaysCode', S); finally IniFile.Free; end;end;{==========================================================================}procedure TForm1.OgDaysCode1Checked(Sender: TObject; Status: TCodeStatus);var S : string;begin case Status of ogValidCode : begin Label1.Caption := 'Days Remaining: ' + IntToStr(OgDaysCode1.GetValue); Exit; end; ogInvalidCode : begin S := 'Invalid Code'; codeinvalid := true; end; ogDayCountUsed : S := 'Program used more than 30 days' + #13 + 'Please register NOW'; ogCodeExpired : S := 'Evaluation period expired' + #13 + 'Please register NOW'; end; ShowMessage(S); Application.Terminate;end;initialization{$i exdys30u.lrs}end.
0 0
- CodeTyphon自带例子源码:限制运行日期
- CodeTyphon32中自带例子源码:限制程序仅运行一次
- 运行Lucene自带例子
- Spark 运行自带例子
- Caffe自带例子运行
- hadoop mahout 运行自带的例子
- Cocos2dx-3.2自带例子的运行
- lazarus自带ssl例子运行测试
- 运行caffe自带的两个例子
- 运行hadoop自带wordcount例子
- 运行oozie自带mapreduce例子
- caffe cpu-only运行自带例子
- 如何运行jasperReport自带的例子程序
- android sdk中自带的例子怎样运行
- hadoop自带例子wordcount的具体运行步骤
- VTK5.8.0自带例子运行错误修改
- kinect环境配置和运行自带的例子
- 3.0正式版环境搭建(1)-- 运行自带例子
- C#中数据库的运用
- leetcode 60:Permutation Sequence
- 06_无限滚动的相册
- 解析固定格式的文件数据 php脚本
- 数学家俱乐部问题
- CodeTyphon自带例子源码:限制运行日期
- 【线性代数公开课MIT Linear Algebra】 第二十二课 特征分解与矩阵的幂
- Github Learing Note
- Swift_UITableView
- Swift_闭包(Closure)
- Seminar《Fast Random Walk with Restart and Its Applications》
- MFC--对话框技巧
- 函数(结构体)
- DOM对XML的语法解析器