Page 1 of 1

mover un elemento de un array

Posted: Mon Feb 15, 2021 4:54 pm
by goosfancito
hola.
Se puede, sin usar ains y luego copiar y luego adel, mover un elemento de un array a otra posicion del mismo arrray?

a[1]:= "a"
a[2]:= "b"
a[3]:= "c"

quedando como resultado final
a[1]:= "a"
a[2]:= "c"
a[3]:= "b"
gracias.

Re: mover un elemento de un array

Posted: Mon Feb 15, 2021 8:59 pm
by George
Dependiendo de lo que quieras hacer y del tamaño del Array tal vez te funcione lo siguiente:

cTmp := a[2]
a[2] := a[3]
a[3] := cTmp

Re: mover un elemento de un array

Posted: Tue Feb 16, 2021 2:48 am
by FranciscoA
Si a lo que te refieres es a inter-cambiar filas, prueba el siguiente codigo.

Code: Select all

//----------------------------------------------------//
Function interCambFILA()
   local oDlg, oBrw, oFont, oCur  
   local aData[ 12 ]

   AEval( aData, { |u,i| aData[ i ] := { NtoCMonth(i), i } } )

   DEFINE CURSOR oCur DRAG
   DEFINE FONT oFont NAME "VERDANA" SIZE 0,-16

   DEFINE DIALOG oDlg SIZE 400,300 PIXEL FONT oFont TITLE "DRAG/DROP: INTER-CAMBIAR FILAS"
   @ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
           DATASOURCE aData COLUMNS 1,2 CELL LINES NOBORDER

   WITH OBJECT oBrw
      :nStretchCol      := 1
      :oDragCursor      := oCur
      :bDragBegin       := { |r,c,f,o| SetDropInfo( { oBrw:nArrayAt, oBrw:aRow } ) }
      :bDropOver        := { |u,r,c,f| oBrw:LButtonDown( r,c ), ;
                                       oBrw:LButtonUp(r,c), ;
                                       aData[u[1]] := oBrw:aRow, ;
                                       aData[oBrw:nArrayAt] := u[2], ;
                                       oBrw:Refresh() }

      :CreateFromCode()
   END

   ACTIVATE DIALOG oDlg CENTERED

   RELEASE FONT oFont
   RELEASE CURSOR oCur
return nil
Saludos.

Re: mover un elemento de un array

Posted: Tue Feb 16, 2021 10:44 am
by goosfancito
Hola. No precisamente.

Hoy por hoy tengo este codigo.

Code: Select all

   AIns( ::aDatos, nDestino + 1, ::aDatos[ nOrigen ], .T. )
   ADel( ::aDatos, nOrigen + 1, .T. )
 
y queria mejorarlo, pense que habia una funcion interna que podría utilizar.

gracias.