Função que ordena um Array.
Exemplo da Rotina:
aSort(aArray)
Exemplo 1- Ordenação de um Array simples:
//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:
//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:
//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