循环中变量问题(10分)

  • 主题发起人 主题发起人 guifuli
  • 开始时间 开始时间
G

guifuli

Unregistered / Unconfirmed
GUEST, unregistred user!
有如下一段程序:
for i := 0 to 98 do
begin
DoSomething;
end;
但我怎样才能使i的步进值为2,即第一次循环i为0,第二次循环i为2,第三次循环i为4...以此类推,直到i为98。
 
楼主打道回府吧,delphi中的for的循环变量不能修改的。
 
pascal 就这点不好 ^_^

改用
i:=0;
while i<=98 do
begin
dosomething;
i:=i+2;
end;
 
for i := 0 to 98 do
begin
DoSomething;
i:=i+2;
end;
 
for i := 0 to 98 do
begin
if i mod 2=0 then break;
end;
 
to HAPPY_ALEX:
喂,朋友,你是不是学Delphi的,试没试?你的那段代码能运行?才怪?!?!?!
 
to andy263:
Pascal是可以实现的,如下:
for I:=0 to 98 step 2 do //默认情况下为1,如:for i:=0 to 98 [step 1] do
begin
.....
end;
不过在Object Pascal中编译器为了优化for循环,循环变量是不能修改的。
 
哈哈!!
erzhong008, 的显然不行,break是跳出循环,由于i初始值为0,0 mod 2=0,所以程序根本不会执行!(只执行半次就跳到for循环外面了)。

NeutronDelphi,的也不行,object pascal不支持step语句!!我在delphi7中调试提示"'DO' Expected but Identifier 'step' found”,显然是不支持step!

delphi7的关于for的帮助如下:
------------------------
for counter := initialValue to finalValue do statement //第一种形式
or
for counter := initialValue downto finalValue do statement //第二种形式
--------------------------------
显然,只提供了两种形式,根本不存在默认情况下为1的问题!

这样写是没有问题的(delphi7中调试通过!):
var
i:integer;
begin
i:=0;
while i<=98 do
begin
i:=i+2;
end;
end;
不信可以拭试
 
for i := 0 to 98 do
begin
if i mod 2=0 then break;
end;
break 不行 continue 试一试 没有那没绝对[8D]
 
for i := 0 to 98 do
begin
if i mod 2=0 then continue;
dosomesth;
end;
break 不行 continue 试一试 没有那没绝对[8D]
如 mod 2=0 不行 mod 2<>0 试一试
条条大陆通罗马 呵呵
 
哈哈
for i := 0 to 98 do
begin
if i mod 2=0 then continue;
dosomesth;
end;
可以执行,但是肯定不对啊,这样执行出来是i为1,3,5,7。。。。97时的情况,与楼主的意思相反啊。
所以mod 2<>0是对的。
 
见我的下一贴
 
i,j:Integer;

for i := 0 to 49 do
begin
j:=i*2;
....
....用j作变量

end;


 
I := 0;
while I < 98 do
begin
dosomething;
Inc(I, 2);
end;
够简单的啦。
 
for i := 0 to 98 step 2
我记得Pascal 有step的,Object Pascal怎么没了?
还是我记忆错了? (basic 里有 step ?)
 
呵呵,多谢erzhong008,灵活运用continue,的确可以改变步长:
for i := 0 to 98 do
begin
if NeedContinue then continue;
dosomesth;
end;

NeedContinue处用适当的表达式即可。
 
上一次有误
for i := 0 to 49 do
begin
.//使用时用(i shl 2)
end;
 
我来总结一下:
在Delphi中,for 是无法改变步长的(默认为1),任何想在for循环中对步长进行改变的做法都是错误的,如sunjialong,HAPPY_ALEX;如果要改变步长,只有用while或repeat,但用哪个好呢?大家知道,请告诉我,谢谢!
 
应该是:
var
I: Integer;
begin
for i := 0 to 8 do
begin
if i mod 2 = 0 then
begin
showmessage(IntToStr(i));
continue;
end;
end;
 
来自:guifuli, 时间:2004-2-4 13:14:00, ID:2435487
我来总结一下:
在Delphi中,for 是无法改变步长的(默认为1),任何想在for循环中对步长进行改变的做法都是错误的,如sunjialong,HAPPY_ALEX;如果要改变步长,只有用while或repeat,但用哪个好呢?大家知道,请告诉我,谢谢!

 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
S
回复
0
查看
850
SUNSTONE的Delphi笔记
S
S
回复
0
查看
782
SUNSTONE的Delphi笔记
S
D
回复
0
查看
881
DelphiTeacher的专栏
D
后退
顶部