procedure Tform1.encode();
var
  i:integer;
  j:integer;
begin
//url解密  (加密格式:将0-9转换为a-j) 解密时将a-j转换为0-9
  SetLength( arrChar , length(urlConfig.text)) ;
  for i:=0 to length(urlConfig.text)-1 do
  begin
      for j:=0 to 9 do
      begin
        if urlConfig.text[i]=num[j] then
        begin
          arrChar[i]:=chr(j);
          break;
        end;
      end;
     arrChar[i]:=urlConfig.text[i];
     //showmessage(arrChar[i]);
  end;
  //res := Copy(PChar(@arrChar[0]),   1,   Length(arrChar));  showmessage(pChar(@arrChar[0]));
end;

解决方案 »

  1.   

    j 是 0..9
    chr(j) 就是 0..9 的ASCII码,并不是a..j
      

  2.   

      var//全局变量
      urlConfig:TStringlist;
      num: array[0..9] of string = ('a','b','c','d','e','f','g','h','i','j');
      arrChar: array of Char;
      res:string;
      

  3.   

    1.
    urlConfig.text[0]并没有值,循环要从1开始到length(urlConfig.text)2.
    循环体内的arrChar[i]:=chr(j);无用
    后面这一句arrChar[i]:=urlConfig.text[i];都把内容改写了3.
    实在不清楚你要实现什么
      

  4.   

    就是个简单的加密那个不是会break吗
      

  5.   

    break是跳出for j:=0 to 9 do这个循环
    那一句是在外面的循环上
      

  6.   


    arrChar[i]:=urlConfig.text[i];
    //现在加在上面就好了
    for j:=0 to 9 do
       begin
       if urlConfig.text[i]=num[j] then
       begin
       arrChar[i]:=chr(j);
       break;
       end;
       end;
    就是如果字符串的值在数组里面有 是当前元素  就把值换成和它的下标  否则不变
    现在还有个问题就是后面的结果 一直是空字符串