Een scripttaal woordenboek gevuld met gegevens sorteren

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 246067
Alles uitklappen | Alles samenvouwen

Samenvatting

Een object Dictionary Scripting is het equivalent van een associatieve array PERL waarin informatie wordt opgeslagen in een matrix van unieke sleutels en gegevens. Omdat deze informatie wordt opgeslagen ongesorteerd, retourneert via de array opsommen informatie in de volgorde die is opgeslagen. Het doel van dit artikel te definiëren is deSortDictionary()de functie die de inhoud van een object dictionary gevuld met gegevens door de sleutel of item.

Meer informatie

Het volgende voorbeeld definieert twee constantendictKeyendictItem, die worden gebruikt door deSortDictionary()functie. DeSortDictionary()functie heeft twee parameters een object gemaakt als een scripting-woordenlijst en een van de constanten te bepalen of de woordenlijst sleutels of items sorteren.

Const dictKey  = 1
Const 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
				

Een voorbeeld werken

In het volgende voorbeeld maakt gebruik van de bovenstaande functie.

Opmerking:Alle opmerkingen zijn verwijderd uit de werkelijke sorteer functie in dit voorbeeld.

De volgende ASP-code kopiëren en opslaan op een map als Sortdemo.asp met ten minste Scripts toegang:
<%@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
%>
				
Wanneer bekeken, moet u de volgende uitvoer weergegeven:
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 biedt programming voorbeelden ter illustratie, zonder expliciete of impliciete garantie. Dit omvat, maar is niet beperkt tot impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal wordt aangetoond en de hulpmiddelen maken en procedures voor foutopsporing worden gebruikt. Ondersteuningstechnici van Microsoft kunnen de functionaliteit van een bepaalde procedure uitgelegd, maar niet passen deze voorbeelden om functionaliteit toegevoegd of procedures uw specifieke behoeften te maken.
https://partner.Microsoft.com/Global/30000104
Bezoek de volgende Microsoft-website voor meer informatie over de ondersteuningsopties die beschikbaar zijn en over contact opnemen met Microsoft:
http://support.Microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Referenties

Zie de website Microsoft Developer Network op de volgende URL voor meer informatie over de Microsoft scripting technologies:
http://msdn2.Microsoft.com/en-us/library/ms950396.aspx

Eigenschappen

Artikel ID: 246067 - Laatste beoordeling: dinsdag 1 maart 2011 - Wijziging: 2.0
Trefwoorden: 
kbinfo kbmt KB246067 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:246067
Vrijwaring inhoud KB-artikelen over niet langer ondersteunde producten
Dit artikel heeft betrekking op producten waarvoor Microsoft geen ondersteuning meer biedt. Daarom wordt dit artikel alleen in de huidige vorm aangeboden en wordt het niet meer bijgewerkt.

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com