CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

For/Do语句中循环体内的循环变量不能改变吗?

楼主Heray(Heray)2002-04-30 12:18:32 在 Delphi / VCL组件开发及应用 提问

用了Delphi好几个月,今天突然发现,居然在For/Do   语句中循环变量的值不能改变,很是让我吃惊。比如我想让循环变量的增量不是1而是其他的数,用了如下语句:  
  for   i:=0   to   100   do  
  begin  
      ……  
      i:=i+10;  
  end;  
   
  结果编译出错。  
  当然我可以将程序改做While语句或者另加几个变量来实现,但是我觉得delphi不会这么笨吧?难道没有改变循环变量的增量的方法吗?    
   
  问题点数:10、回复次数:8Top

1 楼kuangning(郎之间)回复于 2002-04-30 12:29:51 得分 0

delphi的却不支持!  
  但并不是delphi笨  
  你有很多办法可以实现  
   
  如:  
  I   :=   0   ;  
  repeat    
    .......  
    I   :=   I   +   10   ;  
   
  until   i   >=   100   ;Top

2 楼eulb(执子之手,与子偕老)回复于 2002-04-30 12:30:28 得分 0

呵呵  
  确实如此  
  毕竟金无足赤  
   
  你只能变通一下了Top

3 楼Heray(Heray)回复于 2002-04-30 12:35:26 得分 0

哦,谢谢你指出来。  
  C和Basic和Matlab程序写多了,初次见到不支持循环变量改变的语言,感到有点吃惊。Top

4 楼dancemaple(枫之舞)回复于 2002-04-30 12:37:09 得分 0

是不是从VB转过来的?  
  只有解释执行的程序才可以在中间修改for循环变量,编译执行(FORTRAN/Pascal/C/C++等)都不行。这不是笨的问题。  
  可以用while或repeate循环Top

5 楼zswang(伴水清清)(专家门诊清洁工)回复于 2002-04-30 12:42:05 得分 10

Delphi2   之前允许  
  但32位的for循环已经作了优化处理  
  所有就不能在for循环中该变循环变量的值  
   
  你可以作如下调试  
  for   I   :=   5   to   10   do   //看看I的值是不是5->10  
      Caption   :=   'ff';  
  结果不是!因为for已经作了优化处理  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      I:   Integer;  
      T:   DWORD;  
  begin  
      T   :=   GetTickCount;  
      for   I   :=   1   to   10000000   do   ;  
      //你可以比较一下它们执行的速度  
      ShowMessage(IntToStr(GetTickCount   -   T));   //39  
      T   :=   GetTickCount;  
      I   :=   1;  
      while   I   <=   10000000   do   Inc(I);  
      ShowMessage(IntToStr(GetTickCount   -   T));   //59  
  end;  
  Top

6 楼Heray(Heray)回复于 2002-04-30 12:48:46 得分 0

回   dancemaple朋友:  
      我是C转过来的,我还是比较倾向于写for(i=0;i<=100;i+=10)……这样的语句,这样写程序又简短又容易读。对吗?Top

7 楼zswang(伴水清清)(专家门诊清洁工)回复于 2002-04-30 12:54:46 得分 0

for   I   :=   0   to   10   do  
      {   使用   I   *   10   也没有什么不方便   }  
   
  争论语言或者是工具的好坏是没有意义的  
   
  反正不是信仰什么宗教、什么好用就用什么  
   
  但不要自己没有能力   驾御她   就说三道四  
   
  不同语言有不同的特性  
  谁叫你不是她的创造者  
   
   
  Top

8 楼dancemaple(枫之舞)回复于 2002-04-30 12:57:53 得分 0

我觉得两者都不错,Pascal的也很清晰。但循环结构Pascal令人不太满意的地方就是for循环变量的递增步长只能为1或-1,而C的可以随意Top

相关问题

  • 如何用for语句对日期型变量进行循环?
  • 关于循环语句中的变量作用域问题
  • 我想写个循环语句for i:=0 to x,x是个变量,如何实现。
  • 如何用循环语句改变100个label控件的caption
  • ■■ 请问,我写了一个循环语句,变量 i 用来进行循环计数,我怎样才能让i=10的时候停下来让我调试?
  • 变量循环问题?
  • 循环语句的问题?
  • 循环语句的问题??????
  • 关于循环语句 while
  • For...Next循环语句问题……

关键词

  • 循环
  • 语句
  • delphi
  • 循环变量
  • 改变
  • gettickcount
  • 程序
  • 不能

得分解答快速导航

  • 帖主:Heray
  • zswang

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo