Una consulta sobre la función ASort

Una consulta sobre la función ASort

Postby nanoespinoza » Sun May 24, 2020 4:27 am

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.
nanoespinoza
 
Posts: 136
Joined: Thu Mar 16, 2017 4:08 pm
Location: Ecuador

Re: Una consulta sobre la función ASort

Postby Manuel Aranda » Sun May 24, 2020 9:31 am

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
Manuel Aranda
 
Posts: 603
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: Una consulta sobre la función ASort

Postby cnavarro » Sun May 24, 2020 1:19 pm

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

#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
User avatar
cnavarro
 
Posts: 6504
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Una consulta sobre la función ASort

Postby nanoespinoza » Sun May 24, 2020 8:30 pm

Estimados

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

Saludos
nanoespinoza
 
Posts: 136
Joined: Thu Mar 16, 2017 4:08 pm
Location: Ecuador


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 45 guests