aSort

Função que ordena um Array.

Exemplo da Rotina:

aSort(aArray)

Exemplo 1- Ordenação de um Array simples:

aSort - Exemplo 1

aSort – Exemplo 1

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zTeste
Função de Teste
@type function
@author Terminal de Informação
@since 13/11/2016
@version 1.0
    @example
    u_zTeste()
/*/

User Function zTeste()
	Local aArea   := GetArea()
	Local aDados  := {}
	Local nPos    := 0
	Local cMsg    := ""

	//Adicionando elementos no Array
	aAdd(aDados, "Daniel")
	aAdd(aDados, "Atilio")
	aAdd(aDados, "Hudson")
	aAdd(aDados, "Terminal")
	aAdd(aDados, "Teste")

	//Ordena o Array por Nome
	aSort(aDados)

	//Percorre para compor a mensagem
	For nPos := 1 To Len(aDados)
		cMsg += "Nome: "+aDados[nPos]+"."+CRLF
	Next
	MsgInfo("Ordenação: "+CRLF+cMsg, "Atenção")

	RestArea(aArea)
Return

Exemplo 2- Ordenação Crescente de um Array Multidimensional:

aSort - Exemplo 2

aSort – Exemplo 2

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zTeste
Função de Teste
@type function
@author Terminal de Informação
@since 13/11/2016
@version 1.0
    @example
    u_zTeste()
/*/

User Function zTeste()
	Local aArea   := GetArea()
	Local aDados  := {}
	Local nPos    := 0
	Local cMsg    := ""

	//Adicionando elementos no Array (código, nome e idade)
	aAdd(aDados, {"0001", "Daniel",   23})
	aAdd(aDados, {"0002", "Atilio",   33})
	aAdd(aDados, {"0003", "Hudson",   43})
	aAdd(aDados, {"0004", "Terminal", 53})
	aAdd(aDados, {"0005", "Teste",    63})

	//Ordena o Array por Nome (Array multidimensional) - Crescente
	aSort(aDados, , , {|x, y| x[2] < y[2]})

	//Percorre para compor a mensagem
	For nPos := 1 To Len(aDados)
		cMsg += aDados[nPos][2]+", código "+aDados[nPos][1]+"."+CRLF
	Next
	MsgInfo("Ordenação Crescente: "+CRLF+cMsg, "Atenção")

	RestArea(aArea)
Return

Exemplo 3- Ordenação Decrescente de um Array Multidimensional:

aSort - Exemplo 3

aSort – Exemplo 3

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zTeste
Função de Teste
@type function
@author Terminal de Informação
@since 13/11/2016
@version 1.0
    @example
    u_zTeste()
/*/

User Function zTeste()
	Local aArea   := GetArea()
	Local aDados  := {}
	Local nPos    := 0
	Local cMsg    := ""

	//Adicionando elementos no Array (código, nome e idade)
	aAdd(aDados, {"0001", "Daniel",   23})
	aAdd(aDados, {"0002", "Atilio",   33})
	aAdd(aDados, {"0003", "Hudson",   43})
	aAdd(aDados, {"0004", "Terminal", 53})
	aAdd(aDados, {"0005", "Teste",    63})

	//Ordena o Array por Nome (Array multidimensional) - Decrescente
	aSort(aDados, , , {|x, y| x[2] > y[2]})

	//Percorre para compor a mensagem
	For nPos := 1 To Len(aDados)
		cMsg += aDados[nPos][2]+", código "+aDados[nPos][1]+"."+CRLF
	Next
	MsgInfo("Ordenação Decrescente: "+CRLF+cMsg, "Atenção")

	RestArea(aArea)
Return

Exemplo em Vídeo:

Clique nesse link para ver um exemplo em Vídeo da nossa Maratona de Exemplos.

Observações:

– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
– Se tiver sugestões de rotinas, pode entrar em contato;

Referências:

TDN
Universo AdvPL