Ordenar um dicionário de script são preenchido com dados de cadeia

Traduções de Artigos Traduções de Artigos
Artigo: 246067 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

Um objecto de dicionário de processamento de scripts é o equivalente de uma matriz associativa PERL, onde informações sobre estão armazenadas numa matriz consiste em chaves exclusivas e dados de item. Uma vez que estas informações são armazenadas unsorted, enumerar através da matriz devolve informações pela ordem em que foi armazenado. O objectivo deste artigo é definir a função de SortDictionary() ordena o conteúdo de um objecto de dicionário preenchida com dados de cadeia por chave ou item.

Mais Informação

O seguinte exemplo de código define dois constantes, dictKey e dictItem , que são utilizados pela função SortDictionary() . A função SortDictionary() assume dois parâmetros, um objecto criado previamente como um dicionário de scripts e uma das constantes para determinar se ordenar o dicionário chaves ou itens.

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
				

UM exemplo de trabalho

O exemplo seguinte utiliza a função acima.

NOTA: Todos os comentários foram removidos da função real ordenação neste exemplo.

Copie o seguinte código ASP e guardá-lo para uma pasta como Sortdemo.asp com scripts, pelo menos, acesso:
<%@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
%>
				
quando consultada, deve ser apresentado o seguinte resultado:
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
				

A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.
https://partner.microsoft.com/global/30000104
Para obter mais informações sobre as opções de suporte estão disponíveis e sobre como contactar a Microsoft, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Referências

Para obter mais informações sobre tecnologias de processamento de scripts da Microsoft, consulte o site Microsoft Developer Network Web no seguinte URL:
http://msdn2.microsoft.com/en-us/library/ms950396.aspx

Propriedades

Artigo: 246067 - Última revisão: 8 de agosto de 2007 - Revisão: 3.3
A informação contida neste artigo aplica-se a:
  • Microsoft Internet Information Services 5.0
Palavras-chave: 
kbmt kbinfo KB246067 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 246067
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

Submeter comentários

 

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