como o pascal lê um IF

Delphi

18/08/2012

Olá pessoal...

Estou com uma dúvida sobre qual sentido o compilador lê as instruções.
Tenho o seguinte comando: if (FieldByName(gp).AsString = ) and (not FieldByName(gp).IsNull) then
quem ele verificará primeiro?

(FieldByName(gp).AsString = )
ou
(not FieldByName(gp).IsNull)

o motivo da pergunta é que ele dá um erro se eu for fazer uma comparação string com um campu nulo.

agradeço desde já qualquer ajuda...
Vagner Almeida

Vagner Almeida

Curtidas 0

Respostas

Douglas Michelino

Douglas Michelino

18/08/2012

Toda linha de codigo Le de cima para baixo da esquerda para direita...

Ou seja

(FieldByName(gp).AsString = ) << le primeiro
ou
(not FieldByName(gp).IsNull) << le depois

(FieldByName(gp).AsString = )
ou
(not FieldByName(gp).IsNull)

Tenta por assim

If (not(FieldByName(gp).IsNull)) and (FieldByName(gp).AsString <> '') then

ou

If not(FieldByName(gp).IsNull) and (FieldByName(gp).AsString <> '') then
GOSTEI 0
Eduardo Gonçalves

Eduardo Gonçalves

18/08/2012

De qualquer jeito, como se trata de um IF com AND, as duas condições precisarão ser válidas para que o programa "entre no IF". Desta forma, para o exemplo que você apresentou, acaba sendo indiferente o sentido da leitura.
GOSTEI 0
POSTAR