Utilisation de chaînes comme variables discriminantes dans l'instruction Case de Delphi Chen Jiaxin╱[email protected] ● Lorsque l'on mentionne les instructions Case dans l'introduction, le premier cas d'application qui vient à l'esprit est celui d'une variable Déterminer pour permettre au déroulement du programme de choisir un chemin approprié pour poursuivre l’exécution selon différentes conditions. Ou, lorsqu'il existe une série de combinaisons d'instructions if et else if dans notre programme, nous pensons souvent à utiliser des instructions Case pour simplifier le code du programme et améliorer sa lisibilité et son efficacité d'exécution. Cependant, dans certains cas, les instructions Case ne peuvent pas être appliquées à nos programmes car les variables discriminantes qu'elles autorisent sont limitées à toute forme de xPRession) et le type ordinal est ce qu'on appelle les « types ordinaux » qui font référence aux types « ordonnés » tels que. des entiers, des caractères, des énumérations, des booléens et des ensembles, et peut être appliqué à des choses comme Ord(), Pred(), Succ(), Low() et High() Le type d'expression (voir [1]). Malheureusement, string (string) n'est évidemment pas un type ordinal, et à un moment donné (un exemple sera donné ci-dessous), lorsque le type de variable de condition est une chaîne et qu'il existe de nombreuses branches conditionnelles, bien qu'elle soit impuissante, cependant, il ne semble y avoir aucun autre moyen que d'utiliser beaucoup d'instructions if et else if, hélas. Par exemple, le code suivant n'est pas autorisé dans Delphi : #001 var #002 Str: String; // Déclare une variable discriminante de type String #003 begin #004 case Str of // Message d'erreur : Type ordinal requis #005 / / ... #006 end; #007 end;Ceci ne peut tout simplement pas être compilé, donc la solution traditionnelle consiste généralement à le convertir en une combinaison d'un grand nombre d'instructions if et else if. À ce stade, j'aurais vraiment aimé que nous utilisions Visual Basic, car le code suivant est autorisé par son compilateur (voir [5]) : #001 Dim Str As String ' Déclare une variable discriminante de type String #002 Select Case Str ' est équivalent à l'instruction Case #003 de Delphi '... #004 End Select ' OK, via la compilation Ainsi, dans cet article, l'auteur essaie d'utiliser ce problème comme point de départ, dans "En plus de la conversion en une combinaison de if et else. if "Recherche d'autres solutions réalisables en plus des solutions traditionnelles", et j'espère sincèrement que cet article pourra être utile aux personnes confrontées à ce problème et désireuses de trouver une solution (après avoir lu [12]-[14], l'auteur en outre trouvé que c'est effectivement le cas) Aide. Laissez-moi d'abord vous donner un aperçu. Je prévois d'introduire 7 solutions. Les 5 premières méthodes sont des extraits ou des extensions de [9]-[13], et la sixième méthode est un multi-chargeur complet implémenté par l'auteur (surcharge). version. Ces options sont les suivantes : v Option 1 : rechercher un tableau de chaînes v Option 2 : utiliser un index réel v Option 3 : utiliser la fonction de hachage v Option 4 : instruction de cas imbriquée v Option 5 : utiliser TStringListv Option 6 : implémenter la fonction de chargement multiple Solution 7 : appliquer instructions prêtes à l'emploi. Cet article commencera par passer en revue des sujets tels que les instructions conditionnelles (le contenu principal se réfère à [1] et [4]) et les chaînes de reconnaissance (le contenu principal se réfère à [2]). Ceux qui sont familiers avec Delphi peuvent sauter). Dans cette section, lisez la section « Problèmes de performances » directement à la fin de l'article.