Bom dia RsTxSpyMaster,
A função indicada com a opção
F do comando Sort é escrita pelo usuário e deve apenas retornar:
1 quando o primeiro parâmetro informado for maior que o segundo (em posição que deve ficar na lista). A segunda posição é maior que a primeira.
0, "" ou nada quando os dois parâmetros forem iguais (ou seja, quando eles devam ficar na mesma sequência de posições da lista sem importar a ordem entre eles)
-1 para qualquer outro caso
Perceba que com essas informações retornadas, o comando já entende como deve organizar qualquer lista possível: ele vai testando os itens de 2 em 2 até entender as posições que devem ficar baseado nas respostas de várias chamadas à função. Exemplo: para organizar a lista
bola, abacate, cadeado de forma alfabética, ele pode testar:
bola na esquerda com abacate na direita: retorna 1
abacate na esquerda com cadeado na direita: retorna 0
bola na esquerda com cadeado na direita: retorna 0
isso já diz pro comando que a lista correta é
abacate, bola, cadeado pois é a única possibilidade em que abacate < bola e também bola < cadeado.
Sobre a sua pergunta, se você quiser remover todos os itens duplicados independente do número que venha antes, você deve usar outros comandos para tratamento de strings, pois o Sort apenas organiza a lista podendo remover itens totalmente duplicados (mas não itens parcialmente duplicados).
Code: Select all
var1 =
(
39100 BsU9GS7hbjL/
11111 BsT0AmxgCPP/
12345 BsT0AmxgCPP/
12345 BsT0AmxgCPP/
09945 BsT0AmxgCPP/
)
LISTA_FINAL := ""
StringSplit, LISTA_, Var1, `n
Loop % LISTA_0
{
ITEM_ATUAL := LISTA_%A_Index%
ITEM_ATUAL_SEM_DIGITOS := RegExReplace(ITEM_ATUAL,"\d+?\s")
IfNotInString, LISTA_FINAL, %ITEM_ATUAL_SEM_DIGITOS%
{
LISTA_FINAL := LISTA_FINAL . ITEM_ATUAL . "`n"
}
}
msgbox % LISTA_FINAL