Ver Mensaje Individual
  #11  
Antiguo 03-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 27
jachguate Va por buen camino
Yo no veo ningún problema en usar dos locates en el mismo if, incluso con AND. Esto, porque delphi no se traga toda la comprobación de un bocado.

Realiza el primer locate, que deja el puntero en un registro, y luego el segundo, que lo deja en otro.

Ahora... que esto se vea como dos pasos en el debugger... eso no lo creo, pues la operación que traza es el IF, y no cada condición. Salvo que se pueda entrar a debugear el código del Locate, y que se trace con StepIn, entraria dos veces.

Otro punto a tener en cuenta es el estado de la directiva del compilador {$B} que es el Boolean ShortCircuit. Cuando está activado, que es mas optimo, hace que el compilador deje de evaluar las condiciones en cuanto pueda determinar el resultado de la operación completa. Asi, si está en {$B+}, y el primer Locate devuelve FALSE, nunca evaluará el segundo, pues no tiene sentido para el resultado de la operación, dado que se usa AND.

Si se usara OR y el primero devuelve TRUE, igual, nunca se evaluaria el segundo.

Si el programador necesita que se evaluen todas las condiciones, independientemente de esto, por ejemplo, porque realizan alguna tarea imprescindible, entonces debe desactivar el Short Circuit, bien dentro de la pestaña del compilador, para todo el proyecto, o bien con la directiva {$B-} en el punto donde le interese.

Saludos.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita