我想要做产品
产品主题做出来了现在要包装一下,我现在想弄一个有限时的或者是限次数的,我该怎么做?或者有什么控件请各位帮忙,还有我前一阵很忙,忘了散分我看到我的信誉低了有什么方法加上去吗??
产品主题做出来了现在要包装一下,我现在想弄一个有限时的或者是限次数的,我该怎么做?或者有什么控件请各位帮忙,还有我前一阵很忙,忘了散分我看到我的信誉低了有什么方法加上去吗??
解决方案 »
- 用WIN32 INTERNET API实现ftp上传文件报错
- 问一个DBGridEh的问题?
- 使用OleContainer.CreateObjectFromFile打开一个excel文件,请问怎样才能修改其中内容?
- Delphi开发系统
- 迷惑~~迷惑~~~~~关于delphi程序的程序结构???各位老鸟来看看啊!!
- 大家对paradox中.db文件有没有研究,这段话是什么意思?
- 如何转换BMP TO JPEG
- 请问各位大侠哪里有把数据库文件转换成WORD文件的软件?
- Edit 能设定最大输入字符数么???
- 请newyj(老鬼)和wbamboo(波波)两位大侠说清楚!
- sql查询问题(在线等候)
- 如何使一个表查找到的一条记录置为该表的第一条?
转贴一个:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Registry, Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
var
registerTemp : TRegistry;
curDate : TDateTime;
begin
registerTemp := TRegistry.Create;
with registerTemp do
begin
RootKey := HKEY_LOCAL_MACHINE;
//判断是否初次运行程序
if OpenKey('Software\MySoftware',True) then
begin
if ReadBool('Runned') then
//不是第一次运行
begin
curDate := Date;
if (curDate-ReadTime('LastRunTime'))>=ReadInteger('Duration') then
begin
//当前的系统时间超出了使用期限
ShowMessage('试用版已到期');
exit;
end
else
begin
DeleteKey('LastRunTime');
WriteTime('LastRunTime',Date);
end;
end
else
begin
//初次运行程序
DeleteKey('Runned');
WriteBool('Runned',True);
//设置试用期限30天
WriteInteger('Duration',30);
//写入当前运行时间
WriteTime('LastRunTime',Date);
end;
end
else
begin
ShowMessage('Fails!');
end;
CloseKey;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var Reg:Tregistry; KeyName,TempCode,TempName,TempStr:string; Same:Integer; FirstDate,NowDate:Tdatetime; NumberOfDays:real; begin NoRegistry:=true; NowDate:=date; //取得运行时系统日期 try //创建注册表,有该键则读取,无则创建 Reg:=Tregistry.Create ; Reg.RootKey :=hkey_local_machine; KeyName:='Software\jsjb\Example'; if Reg.OpenKey(KeyName,true) then begin TempName:=Reg.ReadString('UsrName'); TempCode:=Reg.ReadString('Passwd'); //读取用户名,注册号 try FirstDate:=Reg.ReadDate('Date'); //非第一次则读入第一次运行时间 except Reg.WriteDate('Date',NowDate); // 若为第一次运行,则写入系统日期 FirstDate:=NowDate; end; end ; reg.CloseKey ; finally reg.Free ; end; TempStr:=Encrypt(TempName); //通过自定义函数Encrypt()来获取密码 Same:=CompareText(TempStr,TempCode); //比较密码 if TempName<>'' then if Same=0 then NoRegistry:=false; //验证密码,通过NoRegistry为false if NoRegistry then begin //若未注册... NumberOfDays:=Nowdate-FirstDate; SpareDays:=round(31-NumberOfDays); Label1.Caption :=FloatToStr(SpareDays); if((NumberOfDays>31) or (NumberOfDays<-1)) then begin showmessage('程序未注册超过试用期或更改系统时间,将终止运行!'); application.Terminate;//超过30天,则禁止运行
end; end; end;
二、注册过程,其响应入口可放于"About"内。 procedure TAbout.Button1Click(Sender: TObject); var InptName,InptCode,RealCode:String; Same:Integer; Reg:Tregistry; Keyname:String; begin if NoRegistry then //未注册时做 begin RealCode:=''; InptName:= InputBox('注册', '输入你的名字', ''); if InptName<>'' then begin InptCode:= InputBox('注册', '输入注册号', ''); RealCode:=Encrypt(InptName); Same:=CompareText(RealCode,InptCode); if (Same<>0) then showmessage('注册号码不对,注册未成功!') else begin //密码匹配时做:把用户名、密码写入注册表 Try Reg:=Tregistry.Create ; Reg.RootKey :=hkey_local_machine; KeyName:='Software\jsjb\Example'; if Reg.OpenKey(KeyName,true) then begin Reg.WriteString('Passwd',InptCode); Reg.WriteString('UsrName',InptName); end; reg.CloseKey ; finally Reg.Free ; end; NoRegistry:=false; //可修改注册后的界面 end; end; end; end;
三、密码的变换函数。此变换函数可由读者自由发挥,在此,仅示一例而已。 Function TForm1.Encrypt(TempStr:string):string; Var Str1:String; i,j:Integer; Begin Str1:=''; For i:=1 to Length(TempStr) do begin j:=(iiii mod (i+30))+(ii mod (i+20))+i3+1; Str1:=Str1+chr(ord(TempStr[i])+j); j:=(iiii mod (i+30))+(ii mod (i+20))+i3+1; Str1:=Str1+chr(ord(TempStr[i])+j); End; Result:=Str1; end;