Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-01-2009
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
Case pero con cadenas en vez de con caracteres

Hola, tengo este código:

Código Delphi [-]
  if Cadena = 'uno' then
    // Acciones a tomar
  if Cadena = 'dos' then
    // Acciones a tomar
  if Cadena = 'tres' then
    // Acciones a tomar
  if Cadena = 'cuatro' then
    // Acciones a tomar

pero me gustaría hacerlo de tal forma que no hubiera tantos ifs ya que lo que se evalúa es siempre la misma variable, Cadena.

¿Podría hacerse algo como esto?

Evaluo la cadena
Si es uno --> // Acciones a tomar
Si es dos --> // Acciones a tomar
Si es tres --> // Acciones a tomar
Si es cuatro --> // Acciones a tomar

Se que si lo que se evalúa es un caracter sí que se puede pero me temo que con cadenas de texto es imposible, ¿me equivoco?

Saludos.
Responder Con Cita
  #2  
Antiguo 21-01-2009
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
No sé si se podrá, pero puedes intentar provandando con constantes.
Código Delphi [-]
CONST
UNO = 'uno';
DOS = 'dos';
...

Case Value of
UNO: // code
DOS: //code
...
end;
Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #3  
Antiguo 21-01-2009
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Si no funciona el anterio, puedes:
Código Delphi [-]
procedure evaluar(valor_inicial: string);
var
elementos: TStringlist;
inx: Integer;
begin
try
elementos := TStringlist.create;
elementos.text := 'uno,dos,tres,cuatro,cinco'; // enumerar todos los posibles casos

inx := elementos.indexof(valor_inicial);

case inx of
0: // codigo para cuando sea "uno"
1: // código para "dos"
...
end;

finally
elementos.free;
end;
end;
end;
Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 21-01-2009
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
Voy a probar, muchas gracias.
Responder Con Cita
  #5  
Antiguo 21-01-2009
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
@D&W

Creo que para añadir elementos a la lista sería así:
Código Delphi [-]
elementos.Add := ('uno');
elementos.Add := ('dos');
elementos.Add := ('tres');
elementos.Add := ('cuatro');
elementos.Add := ('cinco');

Saludos.
Responder Con Cita
  #6  
Antiguo 21-01-2009
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por noob Ver Mensaje
@D&W

Creo que para añadir elementos a la lista sería así:
Código Delphi [-]elementos.Add := ('uno'); elementos.Add := ('dos'); elementos.Add := ('tres'); elementos.Add := ('cuatro'); elementos.Add := ('cinco');


Saludos.
No es necesario escribir tantas líneas.
Si no funciona con el código que escribí anteriormente, que realmente no estoy seguro:
Código Delphi [-]
elementos.text := 'uno,dos,tres,cuatro,cinco'; // enumerar todos los posibles casos
Entonces, solo hay que hacer una ligera modificación. Que con éste código si estoy seguro de que funciona.
Código Delphi [-]
elementos.text := StringReplace('uno,dos,tres,cuatro,cinco', ',', #13#10); // enumerar todos los posibles casos
Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #7  
Antiguo 21-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Sería así:

Código Delphi [-]
elementos.CommaText := 'uno,dos,tres,cuatro,cinco';

// Saludos
Responder Con Cita
  #8  
Antiguo 21-01-2009
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Sería así:
Código Delphi [-]elementos.CommaText := 'uno,dos,tres,cuatro,cinco';

// Saludos
Up !!!
No sabía que existía esa propiedad. Nunca me había dado cuenta.
Sin embargo, personalmente prefiero utilizar el ".text = stringresplace(...)" porque es más seguro y funciona a "como yo quiero"

Gracias roman por el dato.

saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #9  
Antiguo 21-01-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, para hacer un Case de cadenas es mas facil de la forma que explico en este hilo http://www.clubdelphi.com/foros/show...64&postcount=5

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #10  
Antiguo 21-01-2009
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
¡Gracias Caro!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conectar una db con otra pero estando en un pc diferente pero en red solram MySQL 0 04-07-2007 22:41:32
CASE o IFF en SQL dark_c SQL 3 13-01-2007 20:07:33
Comparar cadenas de caracteres sacadas de un fichero papulo Varios 20 22-12-2006 14:43:33
Uso del Case IVAND SQL 4 05-04-2006 17:39:48
Como el SUM pero con caracteres casandra SQL 5 15-08-2005 23:39:33


La franja horaria es GMT +2. Ahora son las 18:12:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi