Existe la función ASort que sirve para ordenar una matriz, pero solo de dimensión uno; requiero ordenar una matriz de 10*8, existe alguna función para esto, o deberé gastar un poco de neuronas haciendomela yo mismo.
Revisé el enlace y no se si ese ejemplo me pueda servir, ahí se esta relacionando dos matrices o yo no lo entiendo bien.
A ver si detallo mas lo mío; tengo una sola matriz con una logitud variable de filas, pero columnas son seis (la defino así aMatriz:={{},{},{},{},{},{}); cuando quiero ordenar me refiere a que se pongan de mayor a menor pero tomando como base a los elementos de la columna 1, mas o menos como un indexado pero sobre un solo campo, pero que al ordenar también mueva a la nueva posición a los elementos de las columnas 2 a 6 que estan relacionados con el dato de la columna 1. No se si lo explique bien, espero que si; en Excel es facil hacer esto con el comando ordenar.
Function Fn_ASort(_a,_n1,_AD) //a=Arreglo , n1=Columna a Ordenar , AD='A'Asc.'D'Desc. Local _aAux,_n,_m,_x,bCondicion If ValType(_n1)=[B] bCondicion:=_n1 Else bCondicion:={||If(_AD='A',_a[_n1,_n]>_a[_n1,_m],_a[_n1,_n]<_a[_n1,_m])} Endif For _n=1 To Len(_a[1]) * Status('Ordenando elemento '+Str(Len(_a[1])-_n,10)) For _m=_n+1 To Len(_a[1]) If Eval(bCondicion,_n,_m) For _x=1 To Len(_a) _aAux:=_a[_x,_n] ; _a[_x,_n]:=_a[_x,_m] ; _a[_x,_m]:=_aAux Next Endif Next Next Return Nil
Que bueno que te sirvio, la forma como defines los arreglos es como lo vengo trabajando de hace mucho tiempo aqui te dejo una clase que te puede servir mucho, esto manipula los arreglos como si fuera una tabla/dbf
saludos Francisco N.
Function TestArray() Local oDatos oDatos := tArray():New(5) // ARREGLO DE CINCO COLUMNAS oDatos:Headers({"codigo","nombre","direccion","direccion_larga"})
Function Fn_ASort(matriz,columna,orden) // orden='A'Asc.'D'Desc. Local _aAux,_n,_m,_x,bCondicion If ValType(columna)=[B] bCondicion:=columna Else bCondicion:={||If(orden='A',matriz[columna,_n]>matriz[columna,_m],matriz[columna,_n]<matriz[columna,_m])} Endif For _n=1 To Len(matriz) For _m=_n+1 To Len(matriz) If matriz[_n]>matriz[_m] For _x=1 To Len(matriz) _aAux:=matriz[_n] matriz[_n]:=matriz[_m] matriz[_m]:=_aAux Next Endif Next Next Return Nil