sintaxis example else ejemplo delphi delphi-xe2

delphi - example - free pascal case of



Usando Case Statement con String (4)

En la biblioteca Jcl tiene la función StrIndex(Index, Array Of String) que funciona así:

Case StrIndex(''SomeName'', [''bobby'', ''tommy'', ''somename'']) of 0: ..code.. ;//bobby 1: ..code..;//tommy 2: ..code..;//somename else ShowMessage(''error''); end.

Digamos que tengo una cuerda

''SomeName''

y quería que los valores retornaran en una declaración de caso. ¿Se puede hacer esto? ¿Se pueden usar cadenas en una declaración de caso como tal?

Case ''SomeName'' of ''bobby'' : 2; ''tommy'' :19; ''somename'' :4000; else showmessage(''Error''); end;


Funciona en D7 y Delphi Seattle, usa el sistema.Ansistring

case AnsiIndexStr(tipo, [''E'',''R''] ) of 0: result := ''yes''; 1: result := ''no''; end;



La respuesta de @ Daniel me indicó la dirección correcta, pero me tomó un tiempo darme cuenta de la parte "Jcl Library" y los comentarios sobre las versiones estándar.

En [al menos] XE2 y posterior, puede usar:

Case IndexStr(''somename'', [''bobby'', ''tommy'', ''somename'', ''george'']) of 0: ..code..; // bobby 1: ..code..; // tommy 2: ..code..; // somename -1: ShowMessage(''Not Present''); // not present in array else ShowMessage(''Default Option''); // present, but not handled above end;

Esta versión distingue entre mayúsculas y minúsculas, por lo que si el primer argumento fuera ''SomeName'' tomaría el not present in array ruta de la not present in array . Use IndexText para comparar mayúsculas y minúsculas.

Para versiones anteriores de Delphi, use AnsiIndexStr o AnsiIndexText , respectivamente.

Felicitaciones a @Daniel, @The_Fox y @afrazier por la mayoría de los componentes de esta respuesta.