2011-08-30 12 views
5

¿Se puede usar Continuar en un bucle While cuando se trabaja con archivos de texto?Uso de Continuar en un bucle While

Me gustaría hacer algunos procesamientos y verificar algunos valores. Si es verdadero, me gustaría omitir una iteración. Si es falso, me gustaría continuar con el siguiente conjunto de líneas (continuar procesando).

¿Continúa en este caso omitir una iteración?

+1

A veces me parece que hace que el código sea más claro si puede omitir continuar. En su caso: If (AcctTag <> '') And (MasterId <> '') Then DoSomething; – johnny

+1

@johnny, totalmente de acuerdo, continue es como un goto, úselo con extremo cuidado o enfréntese a la ira del monstruo del código spaghetti. – Johan

Respuesta

7

Una prueba ni siquiera es necesaria. The documentation ya le da la respuesta:

En código de Delphi, el procedimiento continue hace que el flujo de control para proceder a la siguiente iteración del for, while o una declaración de repetición.

Observe que no hay advertencias sobre lo que está haciendo el ciclo. La instrucción Continuar continúa con la siguiente iteración de cualquier ciclo. En su caso, eso significa que se volverá a verificar Eof y luego se ejecutará el cuerpo del bucle.

+0

Creo que hay ambigüedad en el significado de "la próxima iteración". ¿Qué significa exactamente esto para 'for',' while' y 'repeat'? Sé las respuestas a esta pregunta, pero la documentación sería mejor si se explicara en detalle, en mi opinión. –

+0

P.E. _jumps_ a la siguiente iteración sería más claro. – NGLN

12

Parece que una prueba rápida de 30 segundos respondería más rápido que una publicación aquí. :)

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

Tenga en cuenta que i se incrementa antes de la llamada a Continue, lo que resulta en j visualización de números impares, i mostrando even? j solo se incrementa cuando el ciclo pasa la prueba Continue.

A while funciona de la misma manera si está incrementando un entero, concatenando una cadena o leyendo desde un archivo de texto. Un while es un while es un while sin importar cómo lo use. Solo debe asegurarse, en su código anterior, de que DoSomething realmente lea la siguiente línea del archivo o terminará en un bucle continuo.

+1

** Nota del moderador ** _ Por favor, mantenga los comentarios constructivos y sobre el tema. Eliminé los comentarios en esta respuesta porque degeneraron en noise_. –

Cuestiones relacionadas