PDA

Ver la Versión Completa : Case pero con cadenas en vez de con caracteres


noob
21-01-2009, 16:41:31
Hola, tengo este código:


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.

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:

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í:

elementos.Add := ('uno');
elementos.Add := ('dos');
elementos.Add := ('tres');
elementos.Add := ('cuatro');
elementos.Add := ('cinco');

Saludos.

Chris
21-01-2009, 17:58:58
@D&W

Creo que para añadir elementos a la lista sería así:
Código Delphi [-] (http://www.clubdelphi.com/foros/#)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:

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.

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í:


elementos.CommaText := 'uno,dos,tres,cuatro,cinco';


// Saludos

Chris
21-01-2009, 18:09:17
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/showpost.php?p=241364&postcount=5

Saluditos

noob
21-01-2009, 18:56:07
¡Gracias Caro!