if not in - Estou errando alguma coisa nisso. Por favor, e ajudem.

Delphi

13/11/2013

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

Curtidas 0

Respostas

Marcos Oliveira

Marcos Oliveira

13/11/2013

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
GOSTEI 0
Gustavo Bretas

Gustavo Bretas

13/11/2013

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!
GOSTEI 0
POSTAR