Me jugaría la cabeza a que es un problema de rango de los conjuntos.
Verás, un conjunto en Delphi tiene un máximo de 255 elementos, porque la estructura interna del conjunto usa 8 bits.
Cuando uno crea un conjunto "al vuelo" (con "[" y "]") si los valores sobrepasan el máximo de 8 bits ocurreo overflow y por eso si uno intenta evaluar valores mayores a 255, pues... no funciona porque los valores fueron truncados.
Por ejemplo:
Código Delphi
[-]
var a, b, c: Integer;
begin
a:= 270;
b:= 345;
c:= 30;
if c in [a..b] then ShowMessage('sí');
end;
Da que 30 está entre 270 y 345
. Eso es porque en realidad el conjunto [a..b] quedó formado por los valores 14 y 89.
Así, si uno hace:
Código Delphi
[-]
var a, b, c: Integer;
begin
a:= 270;
b:= 345;
c:= 300;
if c in [a..b] then ShowMessage('sí');
end;
Va a decir que 300 no está entre 14 y 89, aunque uno pensó que era entre 270 y 345...
EDITO: Esto es en Delphi 7, no sé si los conjuntos de D2009 serán igual.