在While循环中使用Continue

时间:2011-08-30 00:36:06

标签: delphi delphi-7

使用文本文件时,可以在While循环中使用继续吗?

我想做一些处理并检查一些值。如果是,我想跳过迭代。如果为false,我想继续下一组行(继续处理)。

while not EOF(InFile) do  
begin  
 DoSomething;  
 if (AcctTag = '') OR (MasterId = '') then  
  Continue;  
 DoSomething;  
end;  

在这种情况下,continue是否会跳过迭代?

2 个答案:

答案 0 :(得分:12)

似乎一个快速的30秒测试会比这里的帖子更快地回答。 :)

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  i, j: Integer;

begin
  j := 0;
  i := 0;
  while i < 10 do
  begin
    Inc(i);
    if Odd(i) then
      Continue;
    Inc(j);
    WriteLn(Format('i = %d, j = %d', [i, j]));
  end;
  ReadLn;
end.

Sample output

请注意,i会在调用Continue之前递增,这会导致j显示奇数,我会显示evenj仅在循环超过Continue测试时递增。

无论是递增整数,连接字符串还是从文本文件中读取,while的工作方式都相同。无论您如何使用whilewhile都是while。您只需要在上面的代码中确保DoSomething实际读取文件中的下一行,否则您将最终连续循环。

答案 1 :(得分:8)

甚至不需要进行测试。 The documentation已经告诉你答案:

  

在Delphi代码中,Continue过程使控制流进入封闭for,while或repeat语句的下一次迭代。

请注意,关于循环正在做什么没有任何警告。 Continue语句继续进行任何循环的下一次迭代。在你的情况下,这意味着将再次检查Eof,然后循环体将运行。