Ir al contenido


Foto

Como usar el operador in


  • Por favor identifícate para responder
4 respuestas en este tema

#1 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 30 diciembre 2011 - 04:15

Quiero usar el operador in, pero al definir el set de datos donde va a buscar no me deja incluir constantes, luego como hago para poder definir un set con el siguiente array:



delphi
  1. _PREFIJOSCORTOS: Array[0..4] of string = ('414', '412', '416', '426', '424');



La idea es poder hacer lo siguiente.



delphi
  1. cPrefijo := Copy(cTelefono, 1, 3);
  2. if cPrefijo in stPrefijosCortos then



Alguna idea???
  • 0

#2 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 30 diciembre 2011 - 04:24

Y no es mas sencillo esto:



delphi
  1.   cPrefijo:= Copy(cTelefono, 1, 3);
  2.   if StrToIntDef(cPrefijo,0) in [414, 412, 416, 426, 424] then



O incluso esto:


delphi
  1. var
  2.   prefijos: set of integer;
  3. begin
  4.   prefijos:= [414, 412, 416, 426, 424];
  5.  
  6.   cPrefijo:= Copy(cTelefono, 1, 3);
  7.   if StrToIntDef(cPrefijo,0) in prefijos then



  • 0

#3 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 30 diciembre 2011 - 04:30

lo que pasa es que hay una segunda parte que es la que complica todo

Los prefijos reales son:

_PREFIJOS:  Array[0..4] of string = ('0414', '0412', '0416', '0426', '0424');

y si los trato como integer no me va a funcionar, los prefijos cortos si los puedo evaluar perfectamente asi pero los largo no me lo permite.

Siguiendo tu ejemplo si coloco set of string no me permite ya que es solo tipos ordinal.


  • 0

#4 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 30 diciembre 2011 - 05:08

Y algo así:



delphi
  1. function Dentro(Str, Lista: String): Boolean;
  2. begin
  3.   with TStringList.Create do
  4.   try
  5.     Commatext:= Lista;
  6.     Result:= Indexof(Str) >= 0 ;
  7.   finally
  8.     Free;
  9.   end;
  10. end;
  11.  
  12.  
  13. begin
  14.   if Dentro('0416','0414,0412,0416,0426,0424') then
  15.     ShowMessage('Lo encontre');
  16. end;




  • 0

#5 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 02 enero 2012 - 10:20

Tomando tu idea hice unos pequeños cambios para poder seguir trabajando con arreglos



delphi
  1. function Estaen(Prefijo: String; Lista: Array of String): Boolean;
  2. var
  3.   nIdx: Integer;
  4. begin
  5.   Result := False;
  6.   for nIdx := 0 to Length(Lista) - 1 do
  7.   begin
  8.       if Lista[nIdx] = Prefijo then
  9.       begin
  10.         Result := True;
  11.         Break;
  12.       end;
  13.   end;
  14. end;



Gracias por la ayuda
  • 0




IP.Board spam blocked by CleanTalk.