function GetPYIndexChar( hzchar:string):char; begin case WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of $B0A1..$B0C4 : result := 'A'; $B0C5..$B2C0 : result := 'B'; $B2C1..$B4ED : result := 'C'; $B4EE..$B6E9 : result := 'D'; $B6EA..$B7A1 : result := 'E'; $B7A2..$B8C0 : result := 'F'; $B8C1..$B9FD : result := 'G'; $B9FE..$BBF6 : result := 'H'; $BBF7..$BFA5 : result := 'J'; $BFA6..$C0AB : result := 'K'; $C0AC..$C2E7 : result := 'L'; $C2E8..$C4C2 : result := 'M'; $C4C3..$C5B5 : result := 'N'; $C5B6..$C5BD : result := 'O'; $C5BE..$C6D9 : result := 'P'; $C6DA..$C8BA : result := 'Q'; $C8BB..$C8F5 : result := 'R'; $C8F6..$CBF9 : result := 'S'; $CBFA..$CDD9 : result := 'T'; $CDDA..$CEF3 : result := 'W'; $CEF4..$D188 : result := 'X'; $D1B9..$D4D0 : result := 'Y'; $D4D1..$D7F9 : result := 'Z'; else result := char(32); end; end;前面的16进制是什么意思,请指点
----------------------------------------------
2222
procedure TForm1.Button1Click(Sender: TObject); var s1,s2:byte; ss,ss1:string; begin with Memo1 do begin Font.Size:=12; Font.Name:='宋体'; ScrollBar:=ssBoth; Lines.Clear; end; s1:=161; ss:=' |'; ss1:='--+'; while s1<254 do begin ss:=ss+IntToHex(s1,2)+' '; ss1:=ss1+'----'; inc(s1,2); if (s1 mod 10)=1 then begin ss:=ss+' '; ss1:=ss1+'-'; end; end; Memo1.Lines.Add(ss); Memo1.Lines.Add(ss1); for s1:=161 to 247 do begin ss:=IntToHex(s1,2)+'|'; for s2:=161 to 254 do begin ss:=ss+chr(s1)+chr(s2); if (s2 mod 10)=0 then ss:=ss+' '; end; Memo1.Lines.Add(ss); if (s1 mod 10)=0 then begin Memo1.Lines.Add(' |'); Memo1.Lines.Add(Memo2.Lines[0]); end; end; end;
type Tfrm_rundll = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); Function Reg:integer; Function Reg_kill:integer; procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var frm_rundll: Tfrm_rundll;
implementation
{$R *.DFM}
procedure Tfrm_rundll.Button1Click(Sender: TObject); begin if reg=-1 then application.Terminate; end;
Function Tfrm_rundll.Reg; type TFunc=function(A_sEditionFlag,A_allow_test,A_Email,A_URL,A_DISKKEY:pchar):pchar; var string1:string; params:array[1..5]of string; p,i:integer; Menu_Table:string; DllName:string; DllParams:string; filename,FuncName:string; MenuCaption,str:string; Func:Tfunc; DllFunc:Thandle; evnOK:boolean; ret_value:string; begin DllName:='dllreg.dll';
if not(FileExists(extractfilepath(application.ExeName)+dllname)) then begin application.MessageBox('系统文件不完整,请重新安装','系统安全检查',48) ; application.Terminate ; end;
if evnOK then begin DllFunc:=Loadlibrary(pchar(DllName)); try if DllFunc<>0 then begin @Func:=GetProcAddress(DllFunc,pchar(FuncName)); if @Func<>nil then begin //调用DLL函数 try ret_value:=Func(pchar(params[1]),pchar(params[2]),pchar(params[3]),pchar(params[4]),pchar('TRUE'));// if ret_value='DISKKEYTRUE' then begin result:=1; // showmessage('磁盘正式版ok'); end;
if ret_value='REGTRUE' then begin result:=11; // showmessage('注册号正式版ok'); end;
if ret_value='TEST' then begin result:=111; // G_Ver_test:=true; // showmessage('注册号试用版ok'); end;
if ret_value='-1' then begin result:=-1; // showmessage('出错啦'); end;
if (ret_value<>'DISKKEYTRUE') and (ret_value<>'REGTRUE') and (ret_value<>'TEST') then begin result:=strtoint(ret_value); application.MessageBox(pchar('还能运行次数:'+ret_value),pchar(caption),48) end; except raise; end;
end; end; finally Freelibrary(DllFunc); end;
end; end;
Function Tfrm_rundll.Reg_kill; type TFunc=function(A_sEditionFlag,A_allow_test,A_Email,A_URL,A_DISKKEY:pchar):pchar; var string1:string; params:array[1..5]of string; p,i:integer; Menu_Table:string; DllName:string; DllParams:string; filename,FuncName:string; MenuCaption,str:string; Func:Tfunc; DllFunc:Thandle; evnOK:boolean; ret_value:string; begin DllName:='dllreg.dll';
if not(FileExists(extractfilepath(application.ExeName)+dllname)) then begin application.MessageBox('系统文件不完整,请重新安装','系统安全检查',48) ; application.Terminate ; end;
if evnOK then begin DllFunc:=Loadlibrary(pchar(DllName)); try if DllFunc<>0 then begin @Func:=GetProcAddress(DllFunc,pchar(FuncName)); if @Func<>nil then begin //调用DLL函数 try ret_value:=Func(pchar(params[1]),pchar(params[2]),pchar(params[3]),pchar(params[4]),pchar('TRUE'));// except raise; end;
end; end; finally Freelibrary(DllFunc); end;
end; end;
procedure Tfrm_rundll.Button2Click(Sender: TObject); begin reg_kill; end;