Hacer un Case con un string
Artículo por Club Developers · 31 December 2005
7288 vistas
De todos es sabido que la estructura Case Of requiere un tipo de datos ordinal, por lo que es imposible hacer un Case Of directamente con strings.
Veamos una manera de poder salvar esta adversidad:
Para ello vamos a usar la función AnsiIndexStr de la unidad StrUtils:
Si nuestra versión de Delphi no nos brinda con esta función, podemos implementarla de la siguiente manera:
Otra idea, en el caso de un Case Of dinámico, es el uso de un objeto TStrings y su método IndexOf
Veamos una manera de poder salvar esta adversidad:
Para ello vamos a usar la función AnsiIndexStr de la unidad StrUtils:
delphi
uses StrUtils; ... case AnsiIndexStr(Str, ['Cadena1', 'Cadena2', 'Cadena3']) of 0 : // Str = 'Cadena1' 1 : // Str = 'Cadena2' 2 : // Str = 'Cadena3' -1 : // Str no vale ninguna de las anteriores end;
Si nuestra versión de Delphi no nos brinda con esta función, podemos implementarla de la siguiente manera:
delphi
function AnsiIndexStr(AText : string; const AValues : array of string) : integer; begin Result := 0; while Result <= High(AValues) do if AValues[Result] = AText then exit else inc(Result); Result := -1; end;
Otra idea, en el caso de un Case Of dinámico, es el uso de un objeto TStrings y su método IndexOf