Использование Continue в цикле While

можно ли использовать Continue в цикле While при работе с текстовыми файлами?

Я хотел бы сделать некоторую обработку и проверить некоторые значения. Если true, я хотел бы пропустить итерацию. Если false, я хотел бы продолжить следующий набор строк (продолжить обработку).

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

в этом случае continue пропускает итерацию?

2 ответов


тест даже не надо. документация уже говорит вам в ответ:

в коде Delphi процедура Continue заставляет поток управления перейти к следующей итерации заключительного оператора for, while или repeat.

обратите внимание, что нет никаких оговорок о том, что делает цикл. Оператор continue переходит к следующей итерации любой петли. В вашем случае это означает, что Eof будет проверен еще раз, и тогда тело петли запустится.


кажется, быстрый 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 отображение нечетных чисел, я показывать even? j увеличивается только тогда, когда цикл проходит мимо