| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 sun19762003 于 2011-11-3 13:03 编辑  
 
  function  GetSN(School, UserName:string):string; 
  var 
    A: array of array of Integer;  //声明一个动态二维数组 
    I, J , K : Integer; 
    N:integer; //循环总次数 
    len:integer; //字符串长度 
    Str,str1,str2 :string; 
  begin 
    Str := School + UserName; 
    if Length(School)< 10 then 
    begin 
        MessageBox(0,'用户名长度必须大于10位,中文要有五个字符以上。','出错',MB_OK+MB_ICONERROR); 
        Exit; 
    end; 
    Len:=Length(Str); 
    N := Len - 10; //循环次数,取最后一次循环的A的值。 
    SetLength(A,N+1,Len);//  分配二维数组矩阵空间。 
    //初始化A[0,i]的值。 
    for i:=0 to Len-1 do  A[0,i]:= ord(Str[i+1]); 
    //以下显示初始化后的结果。 
    // for i:= 0 to Len-1 do  Str1:=Str1+ inttoHex(A[0,i],2)+','; 
    //Memo1.Lines.Add('初始化:'+ Str1); 
   
    //核心算法过程 
    for i:= 1 to N do //循环N次 
    begin 
      for J := 0 to Len-1 do A[I, J] := (A[I-1, J] + A[I-1, J + 1]) mod $FF; 
      //以下显示每一次循环的结果。 
      //for k := 0 to Len-1 do Str2:=Str2+inttoHex(A[I,k],2)+','; 
      //Memo1.Lines.Add(Str2); 
      Str2:=''; 
    end; 
    Str2:=''; 
    //获得循环N次后的结果。 
    for k:= 0 to Len-1 do Str2:=Str2+inttoHex(A[N,k],2); 
    //取前20位格式化字串: 
    Result:=Copy(Str2,1,5)+'-'+Copy(Str2,6,5)+'-'+ 
                Copy(Str2,11,5)+'-'+ Copy(Str2,16,5); 
  end; |   
 
 
 
 |