
[RESUELTO] Case ... of de cadenas
#1
Posted 06 March 2010 - 04:14 PM
Saludos.
#2
Posted 06 March 2010 - 04:21 PM
case Opcion of 'A': .... 'B', 'C': ... end;
Saludos,
#3
Posted 06 March 2010 - 04:26 PM
El uso de char si.
#4
Posted 06 March 2010 - 04:33 PM
function StringToCaseSelect (Selector : string; CaseList: array of string): Integer; var cnt: integer; begin Result:=-1; for cnt:=0 to Length(CaseList)-1 do begin if CompareText(Selector, CaseList[cnt]) = 0 then begin Result:=cnt; Break; end; end; end;
Muy ingenioso verdad?


case StringToCaseSelect('Delphi', ['About','Borland','Delphi']) of 0:ShowMessage('You''ve picked About') ; 1:ShowMessage('You''ve picked Borland') ; 2:ShowMessage('You''ve picked Delphi') ; end;
Aquí el link
Saludos.
#5
Posted 06 March 2010 - 04:51 PM
¡Las cosas de la vida! Eso me pasa por no agregar esas pequeñeces a mi biblioteca.
Mi cabeza estaba pensando en algo parecido. Tener un TStringList y asociar a cada string con una posición. Luego, emplear esa posición para el case.
Saludos,
#6
Posted 06 March 2010 - 05:00 PM


#7
Posted 06 March 2010 - 05:11 PM
No si tuviera LinuxLa mente es como cualquier computador, en algún momento debe fallar
![]()

Saludos,
#8
Posted 06 March 2010 - 05:13 PM
...No si tuviera Linux
jeje ¡claro!


#9
Posted 25 March 2010 - 03:26 PM
Bueno me parece que ésta vez Zarko Gajic reinventó la rueda.¿Hay alguna manera de hacer un case no con Enteros sino con Strings?.
Saludos.



Podrías haberlo hecho asi:
Uses ...,...,StrUtils; ... case AnsiIndexStr(cadena,['Uno', 'Dos', 'Tres']) of 0 : showmessage('Uno'); 1 : showmessage('Dos'); 2 : showmessage('Tres'); -1 : //la cadena no se encuentra en el arreglo, seria como el else del Case; end;
Saludos...

#10
Posted 25 March 2010 - 03:30 PM
Muy interesante, no lo sabia.
Saludos
#11
Posted 25 March 2010 - 04:26 PM


#12
Posted 25 March 2010 - 06:54 PM

Vaya, rgstuamigo me has sorprendido

¿Cómo supiste o te enteraste de ella?
Saludos,
#13
Posted 30 March 2010 - 04:22 PM
Bueno yo me enteréAnsiIndexStr... ¿Donde estabas cuando Fernando te necesitaba?
Vaya, rgstuamigo me has sorprendido. ¿Quien diría que ya había algo de fábrica? Hay tantas funciones que es casi imposible saberse todas...
¿Cómo supiste o te enteraste de ella?
Saludos,


#14
Posted 30 March 2010 - 04:26 PM
Bueno yo me enteré
gracias a nuestra buen amiga y colega Caro
No se podía esperar menos de nuestra amiguita Caro.
Por cierto, felicidades por tu nombramiento en ClubDelphi amigo rgstuamigo

Salud OS
#15
Posted 30 March 2010 - 04:31 PM
Secundo lo dicho por Eliseo, no se puede pedir menos de la gran maestra Caro.
Es sorprendente descubrir que hay cosas que desconocemos. Habría que investigar más a fondo las unidades (lo digo por mí). Muy seguramente hay tantos secretos entre las centenares líneas de código que esperan ser hallados.
Saludos,
#16
Posted 30 March 2010 - 04:35 PM
Muchas gracias......
Por cierto, felicidades por tu nombramiento en ClubDelphi amigo rgstuamigo
Salud OS



Tienen toda la razón Caro es una maestra, yo en lo personal siempre estoy aprendiendo algo nuevo de ella....
Secundo lo dicho por Eliseo, no se puede pedir menos de la gran maestra Caro.
Es sorprendente descubrir que hay cosas que desconocemos. Habría que investigar más a fondo las unidades (lo digo por mí). Muy seguramente hay tantos secretos entre las centenares líneas de código que esperan ser hallados.

Y es verdad que investigar más a fondo las unidades se aprende bastante.

Saludazos...


#17
Posted 02 April 2010 - 02:07 PM
No creo que Zarko haya reinventado la función, Roberto. Tal vez creó su función cuando la unidad StrUtils aún no existía en Delphi (apareció alrededor de la versión 6).Bueno me parece que ésta vez Zarko Gajic reinventó la rueda.
![]()
![]()
..
Podrías haberlo hecho asi:
delphi
Uses ...,...,StrUtils; ... case AnsiIndexStr(cadena,['Uno', 'Dos', 'Tres']) of 0 : showmessage('Uno'); 1 : showmessage('Dos'); 2 : showmessage('Tres'); -1 : //la cadena no se encuentra en el arreglo, seria como el else del Case; end;

Sobre lo que comenta Marcelo, acerca de la gran cantidad de funciones desconocidas, mi primera recomendación es que se tenga el hábito de consultar la ayuda buscando por palabras claves. Al menos la ayuda clásica de Delphi es estupenda para ello:

Otra cosa igual o más útil es hacer búsquedas de expresiones regulares con la opción Find in files del menú Search, sobre los archivos de código fuente de las bibliotecas nativas:

Volviendo al tema, me gustaría comentar que GH Freebrary tiene una función para el mismo propósito, pero opcionalmente se le puede indicar que ignore acentos y espacios laterales.
Uses GHFStrings; procedure TForm1.Button1Click(Sender: TObject); Var I :Integer; begin I := ghPosStr (['viernes', 'sábado', 'domingo'], ' SABADO ', ghstcEssential); ShowMessage (IntToStr (I)); end;
Saludos afectuosos.
Al González.

#18
Posted 02 April 2010 - 02:10 PM

Saludos.
#19
Posted 02 April 2010 - 08:49 PM
Sabía desde hace tiempo de esa posibilidad de buscar mediante expresiones regulares. Pero nunca la usé


GExpert también incluye su propio Search, me gusta este porque clasifica y ordena todo.
Noto unas diferencias entre la página de resultados que ofrece D6 con la que muestras en D7. En tu imagen se aprecia un "tab" con la leyenda "Search for...". En D6 no... la ventana de Mensajes es una sola. ¿Será que hay que configurar algo? 8-)
Saludos,
#20
Posted 07 April 2010 - 03:49 PM
Bueno...tal parece que la funcion creada por Zarko fué posteada en Febrero del 2002 segun ésta página>http://delphi.about....g_Tips_2002.htm, eso quiere decir que la version 6 ya existía.No creo que Zarko haya reinventado la función, Roberto. Tal vez creó su función cuando la unidad StrUtils aún no existía en Delphi (apareció alrededor de la versión 6).
....





Sobre tus TIPs, la verdad no sabía que se podía buscar de esa forma...lo cual me viene de maravilla



Un saludo Sudamericano...
