#include "rwmake.ch"
#include "protheus.ch"
#xtranslate MsgOut([<prm,...>]) => (ConOut([<prm>]),MsgBox([<prm>]))
//-----------------------------------------------------------------------------
//BlackTDN :: Simulando aSort e aEval
//-----------------------------------------------------------------------------
User Function aOrdena()
Local aArray := {10,9,7,4,3,2,5,6,78,89,0,43,2,4,65}
Local aCopy := aClone(aArray)
Local cMsg := ""
Local cCRLF := CRLF
//-----------------------------------------------------------------------------
//Usando as funçõesS padrões
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//Função aEval() : http://tdn.totvs.com/display/tec/AEVal
//-----------------------------------------------------------------------------
aEval(aArray,{|nValor|cMsg+=Str(nValor)+cCRLF})
MsgOut(cMsg,OemToAnsi("Eval|aSort Padrão: Resultado Não Ordenado"),"INFO")
cMsg := ""
//-----------------------------------------------------------------------------
//Função aSort() : http://tdn.totvs.com/pages/viewpage.action?pageId=23889126
//-----------------------------------------------------------------------------
aSort(aArray,NIL,NIL,{|nMenor,nMaior|nMenor<nMaior})
aEval(aArray,{|nValor|cMsg+=Str(nValor)+cCRLF})
MsgOut(cMsg,OemToAnsi("aEval|aSort Padrões: Resultado Ordem Crescente"),"INFO")
cMsg := ""
aSort(aArray,NIL,NIL,{|nMenor,nMaior|nMenor>nMaior})
aEval(aArray,{|nValor|cMsg+=Str(nValor)+cCRLF})
MsgOut(cMsg,OemToAnsi("Eval|aSort Padrões: Resultado Ordem Decrescente"),"INFO")
cMsg := ""
//-----------------------------------------------------------------------------
//Usando as funções customizadas
//-----------------------------------------------------------------------------
aSize(aArray,0)
__aEval(aCopy,{|e|aAdd(aArray,e)})
__aEval(aArray,{|nValor|cMsg+=Str(nValor)+cCRLF})
MsgOut(cMsg,OemToAnsi("Eval|aSort Customizadas: Resultado Não Ordenado"),"INFO")
cMsg := ""
__aSort(aArray,NIL,NIL,{|nMenor,nMaior|nMenor<nMaior})
__aEval(aArray,{|nValor|cMsg+=Str(nValor)+cCRLF})
MsgOut(cMsg,OemToAnsi("__aEval|__aSort Customizadas: Resultado Ordem Crescente"),"INFO")
cMsg := ""
__aSort(aArray,NIL,NIL,{|nMenor,nMaior|nMenor>nMaior})
__aEval(aArray,{|nValor|cMsg+=Str(nValor)+cCRLF})
MsgOut(cMsg,OemToAnsi("__aEval|__aSort Customizadas : Resultado Ordem Decrescente"),"INFO")
cMsg := ""
Return(NIL)
//-----------------------------------------------------------------------------
//Simulando aSort padrao
//-----------------------------------------------------------------------------
Static Function __aSort(aArray,nStart,nCount,bEval)
Local nD
Local nJ
Local uTmp
DEFAULT nStart := 1
DEFAULT nCount := Len( aArray )
For nD := nStart To nCount
For nJ := nD To nCount
IF Eval(bEval,aArray[nJ],aArray[nD])
uTmp := aArray[nD]
aArray[nD] := aArray[nJ]
aArray[nJ] := uTmp
EndIF
Next nJ
Next nI
Return(aArray)
//-----------------------------------------------------------------------------
//Simulando aEval padrao
//-----------------------------------------------------------------------------
Static Function __aEval(aArray,bEval,nStart,nCount)
Local nD
Local nJ
DEFAULT nStart := 1
DEFAULT nCount := Len(aArray)
nJ := nCount
For nD := nStart To nJ
//Função Eval() :: http://tdn.totvs.com.br/pages/viewpage.action?pageId=24346635
Eval(bEval,aArray[nD],nD)
Next nD
Return(aArray)
Comentários
Postar um comentário