Jump to content


Photo

Como usar el operador in


  • Please log in to reply
4 replies to this topic

#1 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 30 December 2011 - 04:15 PM

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
  • 1259 posts
  • LocationEspaña

Posted 30 December 2011 - 04:24 PM

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
  • 4483 posts
  • LocationVenezuela

Posted 30 December 2011 - 04:30 PM

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
  • 1259 posts
  • LocationEspaña

Posted 30 December 2011 - 05:08 PM

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
  • 4483 posts
  • LocationVenezuela

Posted 02 January 2012 - 10:20 AM

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.