Uso de cadenas como variables discriminantes en la declaración de caso de Delphi Chen Jiaxin╱[email protected]● Al mencionar declaraciones de caso en la introducción, el primer caso de aplicación que me viene a la mente es a través de Determinar variables para permitir que el flujo del programa elija. un camino adecuado para continuar la ejecución según diferentes condiciones. O, cuando hay una serie de combinaciones de declaraciones if y else if en nuestro programa, a menudo pensamos en usar declaraciones Case para simplificar el código del programa y mejorar su legibilidad y eficiencia de ejecución. Sin embargo, en algunos casos, las declaraciones Case no se pueden aplicar a nuestros programas porque las variables discriminantes que permiten se limitan a cualquier forma de (咚闶剑╡xPRession) y el tipo ordinal. Estos son los llamados "tipos ordinales" que se refieren a "ordenados". "como números enteros, caracteres, enumeraciones, booleanos y conjuntos, y se pueden aplicar a cosas como Ord(), Pred(), Succ(), Low() y High() El tipo de expresión (ver [1]) . Desafortunadamente, la cadena (cadena) obviamente no es un tipo ordinal, y en algún momento (se dará un ejemplo a continuación), cuando el tipo de variable de condición es una cadena y hay bastantes ramas condicionales, aunque es inútil, sin embargo, parece que no hay otra manera además de usar muchas declaraciones if y else if, por desgracia. Por ejemplo, el siguiente código no está permitido en Delphi: #001 var #002 Str: String; // Declarar una variable discriminante de tipo String #003 begin #004 case Str of // Mensaje de error: Se requiere tipo ordinal #005 // ... #006 end; #007 end;Esto simplemente no se puede compilar, por lo que la solución tradicional suele ser convertirlo en una combinación de una gran cantidad de declaraciones if y else if. En este punto realmente desearía que estuviéramos usando Visual Basic, porque su compilador permite el siguiente código (ver [5]): #001 Dim Str As String ' Declara una variable discriminante de tipo String #002 Select Case Str ' es equivalente a la declaración de caso #003 de Delphi '... #004 End Select ' OK, mediante compilación Entonces, en este artículo, el autor intenta utilizar este problema como punto de partida, además de convertirlo en una combinación de declaraciones if y else if. "Buscar otras soluciones viables además de las soluciones tradicionales", y espero sinceramente que este artículo pueda ser útil para las personas que enfrentan este problema y están ansiosas por encontrar una solución (después de leer [12]-[14], el autor descubrió además que este es efectivamente el caso) Ayuda. Primero déjame darte una vista previa. Planeo presentar 7 soluciones. Los primeros 5 métodos son extractos o extensiones de [9]-[13], mientras que el sexto método es un cargador múltiple completo implementado por el autor. versión. Estas opciones son: v Opción 1: Buscar matriz de cadenas v Opción 2: Usar índice real v Opción 3: Usar función hash v Opción 4: Declaración de casos anidados v Opción 5: Usar TStringListv Opción 6: Implementar función de carga múltiple Solución 7: Aplicar instrucciones preparadas Este artículo comenzará revisando temas como declaraciones condicionales (el contenido principal se refiere a [1] y [4]) y cadenas de reconocimiento (el contenido principal se refiere a [2]). En esta sección, lea la sección "Cuestiones de efectividad" directamente hasta el final del artículo.