var
  I, J: Integer;
begin
  I := Reg.ReadInteger('I'); // I 在注册表中得初始值是 1
  if (I <> 0) and (I <> 100) then
  J := 50 - I;
  Label1.Caption := IntToStr(I);
  I := I + 1;
  WriteInteger('I', I);
end;
可是为什么每执行一次 I的值是按2递减而不是按1递减。
请求帮忙。

解决方案 »

  1.   

    我的代码贴错了地方
    你们再看看~~
    var
      I, J: Integer;
    begin
      I := Reg.ReadInteger('I'); // I 在注册表中得初始值是 1
      if (I <> 0) and (I <> 100) then
      J := 50 - I;
      Label1.Caption := IntToStr(J);
      I := I + 1;
      WriteInteger('I', I);
    end;我是说,这个J的值是递减的~~~
    但是为什么是每次减少2而不是减少1
      

  2.   

    那你先测试一下,看I := Reg.ReadInteger('I'); 读出来的I是几,如果是2的话,你每次在执行J := 50 - I;的时候给I减一就可以了
      

  3.   

    同意:回复人: newyj(吴刚vs西西弗) ( ) 信誉:115  2003-07-28 22:44:00  得分:0 
     
     
     怎么看if 也不象循环语句,你自己搞得编译系统?
      
     
      

  4.   

    j是局部变量,每次调用函数,j被初始化为0,应该不会递减呀你把j设置为全局变量试一下
    {var
      I, J: Integer;
    begin
      I := Reg.ReadInteger('I'); // I 在注册表中得初始值是 1
      if (I <> 0) and (I <> 100) then
      //测试语句
      showmessage(IntToStr(I));
      //
      J := 50 - I;
      Label1.Caption := IntToStr(J);
      I := I + 1;
     //下面可能有问题,我修改了一下
      Reg.WriteInteger('I', I);
    end;}
      

  5.   

    sorry 
    看错了
    j 可以递减楼主可能对reg变量操作时出了问题,
    把与reg相关的代码贴出来看看
      

  6.   

    首先不知道你这样做有什么意义
    看下面两句:
    ---------------
      J := 50 - I; //第二次运行的时候I为2,J当然是减2了
      ...
      I := I + 1; 
    ---------------
      

  7.   


    谢谢: honkily(===CODING===) 给我找除了问题~~~我的目的就是每运行一次这个过程让 I 的值 +1 然后写入注册表~~
    J 的初始值为50 - I
    也就是说 每运行一次以后随着I + 1的变化,让 J 每次减少1
    我自己都把自己弄进去了~~~
    但是现在这段代码我还是搞不清楚了~~~