2011-10-18 4 views
7

¿Se puede convertir la siguiente declaración if en una declaración de caso?¿Cómo puedo probar que un valor está dentro de un rango con una declaración "case" en lugar de una instrucción "if"?

if (Number >= 5) and (Number <= 10) then 
    lblAnswer.Caption := 'in range' 
else 
    lblAnswer.Caption := 'out of range'; 

Mi respuesta:

Sí se puede

case (number >= 5) and (Number <= 10) of 
    lblAnswer.Caption := 'in range'; 
    lblAnswer.Caption := 'out of range'; 
end; 

¿Es esto correcto?

+4

¿Por qué quieres hacer eso? Para tales expresiones, un 'si ... entonces' es solo la manera más clara y rápida de hacerlo. No hay interés en usar un 'caso' aquí. –

+1

Una declaración alternativa: if (number in [5..10]) then .. else .. –

+2

InRange() para cuando los límites no son constantes o están fuera del rango establecido. –

Respuesta

25

Si Número tiene algún tipo de datos entero, a continuación:

case number of 
5 .. 10: lblAnswer.Caption := 'in range'; 
else  lblAnswer.Caption := 'out of range'; 
end; 
+0

thx, así que tuve que omitir el código largo ... y simplemente ir a números alrite tiene sentido ahora, por favor, mucho – user1000441

+4

Por supuesto, esto solo funcionará si number es un entero y no un tipo de coma flotante. –

+1

@ user1000441 si esta respuesta resolvió su problema, debe marcarla como "respuesta aceptada" para que otros sepan que su problema está resuelto. – HpTerm

6

Una pequeña corrección:

case (number >= 5) and (Number <= 10) of 
    true:lblAnswer.Caption := 'in range'; 
    false:lblAnswer.Caption := 'out of range'; 
end; 
+3

+1 Esta es la forma correcta de codificarlo usando 'case' pero, sinceramente, no hay interés en usar un' case' aquí en lugar de una sentencia 'if .. then'. –

+0

0_o ok el código de bruja es el correcto? – user1000441

+0

@peter, este código aquí es correcto. Pero Arnaud quiere decir que una declaración if then es más apropiada. –

-1
Function InRange (Lo,Hi,Val : Integer) : Boolean; 
Begin 
Result := (Val>=Lo)And(Val<=Hi); 
End; 
Cuestiones relacionadas