me ha pasado que cuando se utilizo cadenas (con numeros) para comparaciones, se genera algun tipo de inconsistencia
trata de pasar las cadenas a numero
Código Delphi
[-]
if (strtoint(npromedio.Text)>=0) and (strtoint(npromedio.Text)<=34,99) then
begin
npromedio.Text:='0'
end