我想写个循环语句for i:=0 to x,x是个变量,x大概是个timgic的高度,不固定。
如何实现

解决方案 »

  1.   

    改用while循环即可以下是测试代码procedure TForm1.Button1Click(Sender: TObject);
    var
      I, X: Integer;
    begin
      X := 10;
    //  for I := 0 to X do
    //  begin
    //    Memo1.Lines.Add(Format('I = %d, X = %d', [I, X]));
    //    Dec(X, 2);
    //  end;
    //Result:
    //I = 0, X = 10
    //I = 1, X = 8
    //I = 2, X = 6
    //I = 3, X = 4
    //I = 4, X = 2
    //I = 5, X = 0
    //I = 6, X = -2
    //I = 7, X = -4
    //I = 8, X = -6
    //I = 9, X = -8
    //I = 10, X = -10//  I := 0;
    //  while I <= X do
    //  begin
    //    Memo1.Lines.Add(Format('I = %d, X = %d', [I, X]));
    //    Dec(X, 2);
    //    Inc(I);
    //  end;
    //Result:
    //I = 0, X = 10
    //I = 1, X = 8
    //I = 2, X = 6
    //I = 3, X = 4
    end;
      

  2.   

    如果用for的话,即使x是变量也要在循环的当时有个固定值
    否则就只能用while或者repeat来实现了
      

  3.   

    楼主把for编译成ASM看看,就知道FOR是怎么运行的了,就知道你的问题为什么不可以了
      

  4.   

    x在循环前面是否被赋值了,如果是就直接用好了在循环中如果改变x的值,你就要具体情况具体分析了btw:timgic是什么啊,不是说TImage吧