Una consulta sobre la función ASort

Post Reply
nanoespinoza
Posts: 105
Joined: Thu Mar 16, 2017 4:08 pm
Location: Ecuador

Una consulta sobre la función ASort

Post by nanoespinoza »

Estimados:

Una consulta sencilla sobre el funcionamiento de la función Asort. Pongo el siguiente ejemplo:

Tengo un arreglo con esta composición original:

aMatriz:={"HAWAI", "CALIFORNIA", "<Sin selección>", "1er. ESTADO", "NUEVA YORK", "WASHINGTON"}

Si pongo esta cadena de texto en filas en excel, y las ordeno, me da el siguiente resultado (Y ES EL QUE DESEO):

aMatriz:={"<Sin selección>", "1er. ESTADO", "CALIFORNIA", "HAWAI", "NUEVA YORK", "WASHINGTON"}

Pero usando la función ASort, me resulta esto:

aMatriz:={"1er. ESTADO", "<Sin selección>", "CALIFORNIA", "HAWAI","NUEVA YORK", "WASHINGTON"}

¿Porque y como lo puedo corregir?

Saludos

Fernando Espinoza A.
User avatar
Manuel Aranda
Posts: 561
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: Una consulta sobre la función ASort

Post by Manuel Aranda »

No sé si la solución es muy ortodoxa, pero si metes un espacio en blanco delante de " <Sin selección>" igual lo arreglas.
Un saludo,
Manuel

xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Una consulta sobre la función ASort

Post by cnavarro »

Fernando, intenta así ( con esto yo creo que tienes por donde meterle mano al tema ):

Code: Select all

#include "Fivewin.ch"

Function Main()

   local aMatriz:={"HAWAI", "CALIFORNIA", "<Sin selección>", "1er. ESTADO", "NUEVA YORK", "WASHINGTON"}
   ASort( aMatriz, , , { | x, y | Ordena( x, y ) } )
   XBrowse( aMatriz )


Return nil

Function Ordena( x, y )

   local lSw  := .F.
   if Asc( Left( x, 1 ) ) >= 65 .and. Asc( Left( y, 1 ) ) >= 65
      if x < y
         lSw  := .T.
      endif
   else
      if Asc( Left( y, 1 ) ) >= 65
         lSw  := .T.
      endif
   endif

Return lSw
 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
nanoespinoza
Posts: 105
Joined: Thu Mar 16, 2017 4:08 pm
Location: Ecuador

Re: Una consulta sobre la función ASort

Post by nanoespinoza »

Estimados

Gracias, funcionó perfecto (las 2 soluciones), aunque me quede con la de Cristóbal..

Saludos
Post Reply