Pra funcionar você precisa por os parênteses para o Delphi considerar esse NOT como operador lógico e inverter o resultado de sua comparação.
Se você não tiver os parênteses o Delphi vai considerar esse NOT como operador binário em cima do length e só depois ele vai comparar esse resultado com seu IN. Entra no Delphi e da um CTRL-F7. Digita: not 11 resultado: -12 Digita: not 14 resultado: -15 OBS: o 11 e o 14 se referem ao resultado que o length retornaria se o conteúdo fosse válido. Ou seja, como estes valores não estão no seu conjunto de dados do IN, ele não vai entrar nunca. [ ] s De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Vinicius Enviada em: segunda-feira, 26 de janeiro de 2009 14:59 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] dúvida de not Não, não...o meu IF funcionou perfeitamente ! a dúvida é sobre o porque dos parênteses...e não sobre o algorítmo em si.... segue a dúvida.... Coutinho - Yahoo escreveu: > > Colega, > > tente: > if ( (not length(cpf) = 11) and (not length(cpf) = 14) ) then > Showmessage('Não é nem CIC nem CNPJ'); > > ou ainda pode ser > > if ( ( length(cpf) = 11) or ( length(cpf) = 14) ) then > begin > Faça as sua rotina aqui... > end > else > Showmessage('CIC/CNPJ inválido... Verifique!!!'); > > > > -- > __________________________________ > Emanuel Coutinho > Salvador-Ba-Brasil > > Vinicius escreveu: > > > > Pessoal, tenho uma dúvida. Eu tenho o seguinte IF "if not (Length(CPF) > > in [11, 14]) then" > > a expressão "Length(CPF) in [11, 14]" é SEMPRE Falsa !, porém quando eu > > deixo o IF sem parênteses, o Delphi não entra no IF... > > Não sei se pode ser a ordem de precedência do NOT, sei lá.... > > Alguém sabe me dizer o porquê ? Apenas para entender.. > > > > > > [As partes desta mensagem que não continham texto foram removidas]