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]

Responder a