for i:=1 to (length(s) div 2)  do
    begin
    if  midS[2*i-1]+midS[2*i]='8F' then
            begin
       i:=i+1;//[Error] main.pas(462): Assignment to FOR-Loop variable 'i'
            hexskey:=hexskeyA ;
            end;
            if  midS[2*i-1]+midS[2*i]='8E' then
            begin
            i:=i+1;
            hexskey:=hexskeyB ;
            end;
            begin
            a:=strtoint('$'+midS[2*i-1]+midS[2*i]);
            b:=strtoint('$'+hexskey[2*i-1]+hexskey[2*i]);
            c:=a xor b;
            tmpstr := tmpstr+StrToHexStr(chr(c));
        end;
      end;

解决方案 »

  1.   

    1:i 的值不能改变.2: length(s) div 2 建议用一个变量代替
    3:midS[2*i-1]+midS[2*i] 建议用一个变量代替
    4: 最后一对的begin end 是不需要的。
    5:不要用a b c这样的变量名
    6:首先就计算出 a b 的值,然后在判断时用 $8F=a     $8E=b
      

  2.   

    另一个for循环问题,http://community.csdn.net/Expert/topic/5181/5181071.xml?temp=.860943,大家帮忙看看
      

  3.   

    经验:
    循环体内不能更改计数变量;循环完毕不要以为这时计数变量等于to的值jf