DELPHI程序注册码设计

当你辛辛苦苦用DELPHI做好了一个你认为十分不错的程序,你是否想把它发布出去成为共享软件呢?

做为一个共享软件,注册码肯定是少不了的,你可以通过判断程序是否注册来进行功能,时间或一些其它限制.现在就介绍一种简单的注册码制造方法.思路是这样的:程序运行时先检测注册表,如果找到注册项,则表明已经注册,如果没有找到注册项,则提示要求注册.

<注册例程>

在DELPHI下新建一工程,放置Edit1,Edit2,Label1,Label2,Button1组件.具体代码如下:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,Registry;//在此加上Registry以便调用注册表.
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
Function Check():Boolean;
Procedure CheckReg();
Procedure CreateReg();
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
PName:string; //全局变量,存放用户名和注册码.
PPass:integer;
implementation
{$R *.DFM}
Procedure TForm1.CreateReg();//创建用户信息.
var Rego:TRegistry;
begin
Rego:=TRegistry.Create;
Rego.RootKey:=HKEY_USERS;
rego.OpenKey('.DEFAULT\Software\AngelSoft\Demo',True);//键名为AngelSoft\Demo,可自行修改.
Rego.WriteString('Name',PName);//写入用户名.
Rego.WriteInteger('Pass',PPass);//写入注册码.
Rego.Free;
ShowMessage('程序已经注册,谢谢!');
CheckReg; //刷新.
end;
Procedure TForm1.CheckReg();//检查程序是否在注册表中注册.
var Rego:TRegistry;
begin
Rego:=TRegistry.Create;
Rego.RootKey:=HKEY_USERS;
IF Rego.OpenKey('.DEFAULT\Software\AngelSoft\Demo',False) then
begin
Form1.Caption:='软件已经注册';
Button1.Enabled:=false;
Label1.Caption:=rego.ReadString('Name');//读用户名.
Label2.Caption:=IntToStr(Rego.ReadInteger('Pass')); //读注册码.
rego.Free;
end
else Form1.Caption:='软件未注册,请注册';
end;
Function TForm1.Check():Boolean;//检查注册码是否正确.
var
Temp:pchar;
Name:string;
c:char;
i,Long,Pass:integer;
begin
Pass:=0;
Name:=edit1.Text;
long:=length(Name);
for i:=1 to Long do
begin
temp:=pchar(copy(Name,i,1));
c:=temp^;
Pass:=Pass+ord(c); //将用户名每个字符转换为ASCII码后相加.
end;
if StrToInt(Edit2.Text)=pass then
begin
Result:=True;
PName:=Name;
PPass:=Pass;
end
else Result:=False;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Check then CreateReg
else ShowMessage('注册码不正确,无法注册');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CheckReg;
end;
end.

时间: 2024-10-27 10:00:58

DELPHI程序注册码设计的相关文章

043_《Delphi程序开发范例宝典(第2版)》

<Delphi程序开发范例宝典(第2版)> Delphi 教程 系列书籍 (043) <Delphi程序开发范例宝典(第2版)> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1 Part2 Part3 作者: 梁水 丛书名: 软件工程师典藏 出版社:人民邮电出版社 ISBN:9787115216762 上架时间:2010-1-8 出版日期:2010 年1月 开本:16开 页码:770 版次:2-1 内容简介 本书全面介绍了delphi程序开发所

mdi-delphiMDI程序的设计

问题描述 delphiMDI程序的设计 本人在自学delphi,有一段代码看不懂,求教各位大神解释,越详细越好 procedure OpenChildForm(FormClass: TFormClass; var Fm; AOwner:TComponent); var i: integer; Child:TForm; begin for i := 0 to Screen.FormCount -1 do if Screen.Forms[i].ClassType=FormClass then beg

044_《Delphi程序设计基础教程》

<Delphi程序设计基础教程> Delphi 教程 系列书籍 (044) <Delphi程序设计基础教程> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1 Part2 作者: 何定华 易海胜 丛书名: 21世纪高职高专规划教材.计算机应用系列 出版社:清华大学出版社 ISBN:9787302170433 上架时间:2008-5-14 出版日期:2008 年5月 开本:16开 页码:287 版次:1-1 内容简介 本书采用案例式教学的编写方法,

为 ADO 程序员设计的 ADO.NET (2)

ado|程序|程序员|设计 转换现有代码有许多 ASP 页面使用 ADO 对象来抽取数据.让我们来讨论几种典型的情况,您在不久的将来移植和改编代码时可能会遇上这些情形.如果您有从单个记录集生成报表的 ASP 页面,DataReader 对象将是您最好的伙伴.您浏览 DataReader 对象时,它会将结果输出到页面. String strConn, strCmd; strConn = "DATABASE=MyAgenda;SERVER=localhost;UID=sa;PWD=;";

基于Ajax的应用程序架构设计汇总

ajax|程序|架构|设计 1 浏览器端框架被划分成两大类: •应用程序框架:提供浏览器的功能,但是常以包括窗口小部件抽象和另外的部件而出名,其功能主要围绕桌面GUI框架. •基本结构框架:提供基本的管道和可移植的浏览器抽象,让开发者去创建内容.典型的功能: * 针对XMLHttpRequest的包装器以封装浏览器-服务器的交互.(所有的框架都提供这一功能). * XML操作和查询. * 根据来自XMLHttpRequest的应答执行DOM操作. * 在一些情况中,与另外的浏览器端技术如Flas

为ADO 程序员设计的 ADO.NET (转)

ado|程序|程序员|设计 摘要:本文讨论如何以 ADO.NET 方式实现基本数据库操作,以及何时使用 ADO.NET 代替 ADO. 目录.NET 中的数据访问读取数据DataSet.DataTable 和 Recordset转换现有代码更新数据XML 扩展支持总结 自若干年前推出开放式数据库连接 (ODBC) 应用程序编程接口 (API) 以来,出现了各种各样的数据库访问技术,而 ADO.NET 是其中最新的一种.在这过程中,发生了许多有趣的事.例如,COM 闯入数据库领域,开始培植 OLE

为 ADO 程序员设计的 ADO.NET

ado|程序|程序员|设计 摘要:本文讨论如何以 ADO.NET 方式实现基本数据库操作,以及何时使用 ADO.NET 代替 ADO. 目录.NET 中的数据访问读取数据DataSet.DataTable 和 Recordset转换现有代码更新数据XML 扩展支持总结 自若干年前推出开放式数据库连接 (ODBC) 应用程序编程接口 (API) 以来,出现了各种各样的数据库访问技术,而 ADO.NET 是其中最新的一种.在这过程中,发生了许多有趣的事.例如,COM 闯入数据库领域,开始培植 OLE

为 ADO 程序员设计的 ADO.NET (1)

ado|程序|程序员|设计 为 ADO 程序员设计的 ADO.NET 摘要:本文讨论如何以 ADO.NET 方式实现基本数据库操作,以及何时使用 ADO.NET 代替 ADO. 目录 .NET 中的数据访问读取数据DataSet.DataTable 和 Recordset转换现有代码更新数据XML 扩展支持总结自若干年前推出开放式数据库连接 (ODBC) 应用程序编程接口 (API) 以来,出现了各种各样的数据库访问技术,而 ADO.NET 是其中最新的一种.在这过程中,发生了许多有趣的事.例如

VB外接程序的设计- 得到VB的控制权

程序|控制|设计 VB外接程序的设计一,得到VB的控制权首先,外接,故名思意,当然必须是要和vb一起启动!在新建一外接工程后.新工程中设计器中有 Conncet.Dsr有这一元件,元件中有最为关键的一个事件 Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As