Fórum if not in - Estou errando alguma coisa nisso. Por favor, e ajudem. #461037

13/11/2013

0

Quando executo a ação abaixo informa "Ordinal type required". O que estou errando? (Uso delphi5)

var
sNossoNr : String;
begin
sNossoNr := '55445';

if not (sNossoNr in ['44740','43432','38189','46915','40681','40680','40682','38783','40679','47095',
'38777','38778','38779','47520','38780','38179','44405','43409','47420','40683',
'40687','40684','40688','38187','38186','46916','46917','44408','44194','38183',
'38180','38184','38181','38185','44407','46915','46914','40351','39891','39899',
'46912','47112','38787','38761','38188','38950','44410','44409','44404','43433',
'44411']) then
retorno := 'N';
end;
Emir Neto

Emir Neto

Responder

Posts

14/11/2013

Marcos Oliveira

Olha, não tenho certeza absoluta, mas o "IN" creio que não aceite Strings. E se colocar tudo como inteiro, terá outro problema: o "IN" só aceita valores de 0 a 255. (Por favor, se eu estiver errado, alguém me corrija.)
O que você pode fazer é trocar por um case.

Att,

Marcos
Responder

Gostei + 0

14/11/2013

Gustavo Bretas

Mais ou menos isso Marcos, nos testes que fiz, o IN aceitou até 3 digitos (999), mas como vc disse, pode ser substituído por case, segue exemplo:

procedure TForm1.Button2Click(Sender: TObject);
var
  sNossoNumero: Integer;
begin
  sNossoNumero := 2;
  case sNossoNumero of
    44740, 43432, 38189, 40681, 40680, 40682, 38783, 40679, 47095, 38777, 38778, 38779, 47520, 38780, 38179, 44405, 43409, 47420,
      40683, 40687, 40684, 40688, 38187, 38186, 46916, 46917, 44408, 44194, 38183, 38180, 38184, 38181, 38185, 44407, 46915, 46914,
      40351, 39891, 39899, 46912, 47112, 38787, 38761, 38188, 38950, 44410, 44409, 44404, 43433, 44411:
      begin
        ShowMessage('Sim');
      end
  else
    ShowMessage('Não');
  end
end;


Só é necessário observar repetições dos números, case não aceita, na lista haviam dois 46915!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar