É possível usar ASORT com SUBSTR para a classificação?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

É possível usar ASORT com SUBSTR para a classificação?

Mensagem por ANDRIL »

Pessoal procurei no fórum sobre o uso de ASORT(), vi vários exemplos, porém nenhum me serviu.

Tenho um Vetor:

Código: Selecionar todos

snomeArq[01]="01095331.SPO  VND:000382 Dt:11/11/2008-09:53 Op:FULANO          Mq:01"
snomeArq[02]="01105923.SPO  VND:000375 Dt:11/11/2008-10:59 Op:FULANO          Mq:01"
snomeArq[03]="01095325.SPO  VND:000426 Dt:11/11/2008-09:53 Op:FULANO          Mq:01"

Precisava classificar este array, usando o como indice ( VND:000382 ) sendo assim ficaria:

Código: Selecionar todos

snomeArq[02]="01105923.SPO  VND:000375 Dt:11/11/2008-10:59 Op:FULANO          Mq:01"
snomeArq[01]="01095331.SPO  VND:000382 Dt:11/11/2008-09:53 Op:FULANO          Mq:01"
snomeArq[03]="01095325.SPO  VND:000426 Dt:11/11/2008-09:53 Op:FULANO          Mq:01"
Pra isso usei:

Código: Selecionar todos

ASORT(snomeArq, {|x| substr(x,19,06)})
Não deu certo. Tem como fazer isso, o ASORT() aceita parte do elemento para classificação?

Ate+,
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: É possível usar ASORT com SUBSTR para a classificação?

Mensagem por Maligno »

Código: Selecionar todos

ASORT(snomeArq,{|x,y|substr(x,19,06) < substr(y,19,06)})
Acho que assim deve resolver o problema. Observe que o bloco de código que ASort() recebe é o código que fará a comparação entre os elementos em dado momento da ordenação. Portanto, ele exige dois argumentos, arbitrariamente chamados de X e Y.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: É possível usar ASORT com SUBSTR para a classificação?

Mensagem por ANDRIL »

Maligno, curiosamente tambem não funcionou!

Resultaldo obtido:

Código: Selecionar todos

snomeArq[03]="01095325.SPO  VND:000426 Dt:11/11/2008-09:53 Op:FULANO          Mq:01"
snomeArq[01]="01095331.SPO  VND:000382 Dt:11/11/2008-09:53 Op:FULANO          Mq:01"
snomeArq[02]="01105923.SPO  VND:000375 Dt:11/11/2008-10:59 Op:FULANO          Mq:01"
Alguma outra idéia?

Ate+,
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: É possível usar ASORT com SUBSTR para a classificação?

Mensagem por gvc »

ASort( <aArray>, [<nStart>], [<nCount>], [<bSort>] ) --> aArray


ASORT(snomeArq,,,{|x,y|substr(x,19,06) < substr(y,19,06)})
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

É possível usar ASORT com SUBSTR para a classificação?

Mensagem por Pablo César »

Tente desta forma então:

snomeArq:=ASORT(snomeArq,,,{ |x,y| val(substr(x,19,06)) < val(substr(y,19,06)) })
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: É possível usar ASORT com SUBSTR para a classificação?

Mensagem por Maligno »

Deculpe. Esqueci das vírgulas. Agora dá certo. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: É possível usar ASORT com SUBSTR para a classificação?

Mensagem por ANDRIL »

Obrigado a todos, Pablo o segredo estava no val() conforme sua fórmula.
Problema resolvido e Agradecido.

Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: É possível usar ASORT com SUBSTR para a classificação?

Mensagem por Maligno »

Esse Val() não deveria fazer diferença, já que as strings dos números tem os mesmos tamanhos e estão alinhadas. Experimente tirar os Val(). Acredito que deve dar o mesmo resultado. O problema era só com as vírgulas.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder