Tri d’un dictionnaire de script rempli avec les données de type chaîne

Exclusion de responsabilité du contenu obsolète de la base de connaissances

Cet article a été rédigé sur les produits pour lesquels Microsoft n’offre plus aucune prise en charge. Par conséquent, cet article est proposé « en l’état » et ne sera plus mis à jour.

Résumé

Un objet de dictionnaire de script est l’équivalent d’un tableau associatif PERL, où les informations sont stockées dans un tableau constitué des clés uniques et les données de l’élément. Dans la mesure où cette information est stockée non trié, énumérant le tableau renvoie des informations dans l’ordre, qu'il a été stocké. L’objectif de cet article est de définir la fonction SortDictionary() qui trie le contenu d’un objet de dictionnaire rempli avec les données de type chaîne par clé ou par article.

Plus d'informations

L’exemple de code suivant définit deux constantes, dictKey et dictItem, qui sont utilisées par la fonction SortDictionary() . La fonction SortDictionary() prend deux paramètres, un objet précédemment créé sous la forme d’un dictionnaire de script et une des constantes afin de déterminer s’il faut trier par clés ou les éléments du dictionnaire.

Const dictKey  = 1Const dictItem = 2

Function SortDictionary(objDict,intSort)
' declare our variables
Dim strDict()
Dim objKey
Dim strKey,strItem
Dim X,Y,Z

' get the dictionary count
Z = objDict.Count

' we need more than one item to warrant sorting
If Z > 1 Then
' create an array to store dictionary information
ReDim strDict(Z,2)
X = 0
' populate the string array
For Each objKey In objDict
strDict(X,dictKey) = CStr(objKey)
strDict(X,dictItem) = CStr(objDict(objKey))
X = X + 1
Next

' perform a a shell sort of the string array
For X = 0 to (Z - 2)
For Y = X to (Z - 1)
If StrComp(strDict(X,intSort),strDict(Y,intSort),vbTextCompare) > 0 Then
strKey = strDict(X,dictKey)
strItem = strDict(X,dictItem)
strDict(X,dictKey) = strDict(Y,dictKey)
strDict(X,dictItem) = strDict(Y,dictItem)
strDict(Y,dictKey) = strKey
strDict(Y,dictItem) = strItem
End If
Next
Next

' erase the contents of the dictionary object
objDict.RemoveAll

' repopulate the dictionary with the sorted information
For X = 0 to (Z - 1)
objDict.Add strDict(X,dictKey), strDict(X,dictItem)
Next

End If

End Function

Un exemple fonctionnel

L’exemple suivant utilise la fonction ci-dessus.

Remarque : Tous les commentaires ont été supprimés de la fonction de tri réelle dans cet exemple.


Copiez le code ASP suivant et enregistrez-le dans un dossier en tant que Sortdemo.asp avec des Scripts au moins l’accès :
<%@LANGUAGE="VBSCRIPT"%><% Option Explicit %>
<html>
<head><title>Dictionary Sorting</title></head>
<body>
<%

Dim d, i

Const dictKey = 1
Const dictItem = 2

Set d = Server.CreateObject("Scripting.Dictionary")

d.Add "3", "Delta"
d.Add "1", "Foxtrot"
d.Add "4", "Bravo"
d.Add "2", "Echo"
d.Add "6", "Alpha"
d.Add "5", "Charlie"

Response.Write "<p>Before Sorting:<br>"
For Each i In d
Response.Write i & "=" & d(i) & "<br>"
Next

Response.Write "<p>By Key:<br>"
SortDictionary d,dictKey
For Each i In d
Response.Write i & "=" & d(i) & "<br>"
Next

Response.Write "<p>By Item:<br>"
SortDictionary d,dictItem
For Each i In d
Response.Write d(i) & "=" & i & "<br>"
Next
%>
</body>
</html>
<%
Function SortDictionary(objDict,intSort)
Dim strDict()
Dim objKey
Dim strKey,strItem
Dim X,Y,Z
Z = objDict.Count
If Z > 1 Then
ReDim strDict(Z,2)
X = 0
For Each objKey In objDict
strDict(X,dictKey) = CStr(objKey)
strDict(X,dictItem) = CStr(objDict(objKey))
X = X + 1
Next
For X = 0 to (Z - 2)
For Y = X to (Z - 1)
If StrComp(strDict(X,intSort),strDict(Y,intSort),vbTextCompare) > 0 Then
strKey = strDict(X,dictKey)
strItem = strDict(X,dictItem)
strDict(X,dictKey) = strDict(Y,dictKey)
strDict(X,dictItem) = strDict(Y,dictItem)
strDict(Y,dictKey) = strKey
strDict(Y,dictItem) = strItem
End If
Next
Next
objDict.RemoveAll
For X = 0 to (Z - 1)
objDict.Add strDict(X,dictKey), strDict(X,dictItem)
Next
End If
End Function
%>

Lors de l’exploration, la sortie suivante doit s’afficher :
Before Sorting:3=Delta
1=Foxtrot
4=Bravo
2=Echo
6=Alpha
5=Charlie

By Key:
1=Foxtrot
2=Echo
3=Delta
4=Bravo
5=Charlie
6=Alpha

By Item:
Alpha=6
Bravo=4
Charlie=5
Delta=3
Echo=2
Foxtrot=1


Microsoft fournit des exemples de programmation à titre d'illustration uniquement, sans garantie expresse ou implicite. Ceci inclut, mais n'est pas limité à, les garanties implicites de qualité marchande ou d'adéquation à un usage particulier. Cet article suppose que vous êtes familiarisé avec le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les ingénieurs du support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière, mais ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques.

Pour plus d’informations sur les options de support disponibles et sur la façon de contacter Microsoft, visitez le site Web de Microsoft à l’adresse suivante :

Références

Pour plus d’informations sur les technologies de script de Microsoft, consultez le site Web de Microsoft Developer Network à l’ADRESSE suivante :
Propriétés

ID d'article : 246067 - Dernière mise à jour : 8 janv. 2017 - Révision : 1

Commentaires