我想要做产品
产品主题做出来了现在要包装一下,我现在想弄一个有限时的或者是限次数的,我该怎么做?或者有什么控件请各位帮忙,还有我前一阵很忙,忘了散分我看到我的信誉低了有什么方法加上去吗??

解决方案 »

  1.   


    转贴一个:
    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;
      

  2.   

    程序第一次运行就写入其运行时间,应用期限为30天,超过30天就不再运行。全局变量NoRegistry、SpareDays来分别判断是否注册和剩余期限,自定义函数Encrypt为用户名到密码的变换函数。  一、程序启动时,通过搜索注册表,判断是否第一次运行和是否注册,来确定程序是否运行。  
    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:=(iiii mod (i+30))+(ii mod (i+20))+i3+1;  Str1:=Str1+chr(ord(TempStr[i])+j);  j:=(iiii mod (i+30))+(ii mod (i+20))+i3+1;  Str1:=Str1+chr(ord(TempStr[i])+j);  End;  Result:=Str1;  end;