java代码如下:
    public static String DecodePasswd(String varCode)
    {
        String des = new String();
        String strKey = new String();
        if(varCode == null || varCode.length() == 0)
            return "";
        strKey = "zxcvbnm,./asdfghjkl;'qwertyuiop[]\\1234567890-=` ZXCVBNM<>?:LKJHGFDSAQWERTYUIOP{}|+_)(*&^%$#@!~";
        if(varCode.length() % 2 == 1)
            varCode = String.valueOf(String.valueOf(varCode)).concat("?");
        des = "";
        int n;
        for(n = 0; n <= varCode.length() / 2 - 1; n++)
        {
            char b = varCode.charAt(n * 2);
            int a = strKey.indexOf(varCode.charAt(n * 2 + 1));
            des = String.valueOf(des) + String.valueOf((char)(b ^ a));
        }
 
        n = des.indexOf(1);
        if(n > 0)
            return des.substring(0, n);
        else
            return des;
    }
以上这段代码在翻译成delphi中,我翻译的如下:function TForm1.Translate(varCode: string): string;
var
  des,strKey,b: string;
  n,a,changdu: integer;
begin
  changdu:= length(varcode);
  //怎么定义下边这个字符串
  //strKey = 'zxcvbnm,./asdfghjkl;'qwertyuiop[]\\1234567890-=` ZXCVBNM<>?:LKJHGFDSAQWERTYUIOP{}|+_)(*&^%$#@!~';
  if (varcode='') or (changdu<=0) then
    result:=''
  else begin
    if (changdu mod 2=1) then varcode:= concat(varcode,'?');
    for n:=0 to (changdu div 2) -1 do
      begin
        b:= copy(varcode,1,n*2);   //
        a:= pos(strkey,copy(varcode,1,n*2+1));           //
        //des的值,下面这句应该怎么写?
        des:= strtoint(des)+
      end;
  end;
  //下面该怎么写?
  result:= des;谢谢!

解决方案 »

  1.   

    可惜java没咋学,只有帮你up了
      

  2.   

    大概如下, 但要修改function TForm1.Translate(varCode: string): string;
    var
      des, strKey: string;
      n, a, changdu: integer;
      b: char;
    begin
      changdu := length(varcode);  strKey =
        QuotedStr('zxcvbnm,./asdfghjkl;''qwertyuiop[]\\1234567890-=` ZXCVBNM<>?:LKJHGFDSAQWERTYUIOP{}|+_)(*&^%$#@!~');
      if (varcode = '') or (changdu <= 0) then
      begin
        result := '';
        exit;
      end;  if ((changdu mod 2) = 1) then varCode := varCode + '?';  for n := 0 to (changdu div 2) - 1 do
      begin
        b := Ord(varcode[n * 2]); //這裹要修改, 從1開始取值
        a := Pos(varcode[n * 2 + 1], strKey);
        des := Des + intToStr(b * a);
      end;
      result := des;
    end;
      

  3.   

    java 可能跟 C 差不多吧!
      

  4.   

    JAVA俺是不会不过用DELPHI生成一个HTML俺作了一个周