Conoces las trampas de las sentencias If-Then-Else en el código Delphi

En Delphi, la sentencia if se usa para probar una condición y luego ejecutar secciones de código basadas en si esa condición es Verdadera o Falsa.

Una sentencia general if-then-else se parece a :

 

 if <condition> then <true block> else <false block>;

 

Tanto el "bloque verdadero" como el "bloque falso" pueden ser una frase simple o una frase estructurada (rodeada de un par de inicio y fin).

Consideremos un ejemplo usando sentencias if anidadas:

 

 j := 50;

if j >= 0 then

  if j = 100 then Caption := 'Number is 100!'

else

  Caption := 'Number is NEGATIVE!';v

 

¿Cuál será el valor de "Cation"? Responde: "'¡El número es NEGATIVO!" ¿No te lo esperabas?

 

Tenga en cuenta que el compilador no tiene en cuenta su formato, podría haber escrito lo anterior como:

 

 j := 50;

if j >= 0 then

if j = 100 then Caption := 'Number is 100!'

else

Caption := 'Number is NEGATIVE!';v

o incluso como (todo en una línea):

 

 j := 50; if j >= 0 then if j = 100 then Caption := 'Number is 100!'

else

Caption := 'Number is NEGATIVE!';v

 

El ";" marca el final de una declaración.

 

El compilador leerá la declaración anterior como:

 

 j := 50;

if j >= 0 then

  if j = 100 then

    Caption := 'Number is 100!'

  else

    Caption := 'Number is NEGATIVE!';

o para ser más precisos:

 

 j := 50;

if j >= 0 then

begin

  if j = 100 then

    Caption := 'Number is 100!'

  else

    Caption := 'Number is NEGATIVE!';

end;

 

Nuestra declaración ELSE se interpretará como parte de la declaración "interna" de IF. El enunciado "interno" es un enunciado cerrado y no necesita un BEGIN...ELSE.

 

Para asegurarse de que sabe cómo anidan sus sentencias si son tratadas por el compilador, y para arreglar el "problema" anterior, puede escribir la versión inicial como:

 j := 50;

if j >= 0 then

  if j = 100 then Caption := 'Number is 100!' else

else

  Caption := 'Number is NEGATIVE!';

 

Uh! El feo "más" termina la línea anidada!? Compila, funciona!

 

La mejor solución es: usar siempre pares de inicio y fin con sentencias if nested:

 

 j := 50;

if j >= 0 then

begin

  if j = 100 then Caption := 'Number is 100!';

end

else

begin

  Caption := 'Number is NEGATIVE!';

end;

¿Demasiadas parejas de principio a fin para ti? ¡Más vale prevenir que curar! De todos modos, las Plantillas de Código están diseñadas para añadir estructuras esqueléticas de uso común a su código fuente y luego rellenarlas.

(0 votes)