Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Case pero con cadenas en vez de con caracteres (https://www.clubdelphi.com/foros/showthread.php?t=62929)

noob 21-01-2009 16:41:31

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.

Chris 21-01-2009 16:47:21

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.

Chris 21-01-2009 16:51:51

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.

noob 21-01-2009 16:53:02

Voy a probar, muchas gracias.

noob 21-01-2009 17:38:59

@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.

Chris 21-01-2009 17:58:58

Cita:

Empezado por noob (Mensaje 335384)
@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.

roman 21-01-2009 18:03:07

Sería así:

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

// Saludos

Chris 21-01-2009 18:09:17

Cita:

Empezado por roman (Mensaje 335394)
Sería así:
Código Delphi [-]elementos.CommaText := 'uno,dos,tres,cuatro,cinco';

// Saludos

Up !!! :eek:
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.

Caro 21-01-2009 18:41:13

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

noob 21-01-2009 18:56:07

¡Gracias Caro!


La franja horaria es GMT +2. Ahora son las 22:24:17.

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