在进行注册码比较的时候要注意(En代表加密函数) if En(系列号)=En(注册码) then ShowMessage('注册成功!') else ShowMessage('注册失败'); 如果是这样进行判断的话,那么注册码在内存当中就可以直接看到了。避免这样的情况发生.你可以对比较的值进行移位操作这样在内存中出现的值就不是真正的注册码. if ShlStr(En(系列号))=ShlStr(En(注册码)) then ShowMessage('注册成功!') else ShowMessage('注册失败'); 还有就是注册成功和注册失败的时候不要作任何的提示,只是可用和不可用功能.
移位的函数我给出一个,其实你自己可以写自己的移位函数,我只是给出一个参考的:
Function ShlStr(Str:PChar):PChar; //进行明码变换; var a:LongWord; Int1,Int2:Integer; j,j1:Integer; sum:LongWord; Str1:String; begin Str1:=StrPas(ABC44Str); Int2:=Length(Str1); for j1:=1 to Int2 do begin a:=ord(Str1[j1]) shl 7; sum:=sum+a; end; Result:=PChar(IntToStr(sum)); end;