Una consulta sobre la función ASort

Post Reply
nanoespinoza
Posts: 141
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: 605
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 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

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 | Expand


#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
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
nanoespinoza
Posts: 141
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