Page 1 of 1

aDel e Array multidimensionali

Posted: Mon Mar 23, 2009 7:58 pm
by Marco Turco
Salve a tutti,
ho un problema nel cancellare una serie di elementi di un array mulidimensionale.

Immaginiamo di avere un array del tipo

aArray:={}
aadd(aArray,{1,"pippo"})
aadd(aArray,{2,"pluto"})
aadd(aArray,{1,"topolino"})
aadd(aArray,{2,"paperino"})

Vorrei cancellare dall'array i nomi che hanno valore 1 nel primo elemento

ho provato con

for i:=1 to len(aArray)
if aArray[i,1]=1
adel(aArray,i)
endif
next

ma credo sia incorretto in quanto mi cambia la struttura dell'array

Qualche idea a riguardo ?

Grazie in anticipo

Re: aDel e Array multidimensionali

Posted: Mon Mar 23, 2009 9:12 pm
by Enrico Maria Giordano

Code: Select all

#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL aArray := {}

    LOCAL i

    AADD( aArray, {1, "pippo"} )
    AADD( aArray, {2, "pluto"} )
    AADD( aArray, {1, "topolino"} )
    AADD( aArray, {2, "paperino"} )

    FOR i = 1 TO LEN( aArray )
        ? aArray[ i, 1 ], aArray[ i, 2 ]
    NEXT

    FOR i = 1 TO LEN( aArray )
        IF aArray[ i, 1 ] = 1
            ADEL( aArray, i )
            ASIZE( aArray, LEN( aArray ) - 1 )
        ENDIF
    NEXT

    FOR i = 1 TO LEN( aArray )
        ? aArray[ i, 1 ], aArray[ i, 2 ]
    NEXT

    RETURN NIL
EMG

Re: aDel e Array multidimensionali

Posted: Mon Mar 23, 2009 11:13 pm
by Marco Turco
Funziona. Grazie.

Re: aDel e Array multidimensionali

Posted: Thu Apr 23, 2009 10:06 pm
by César E. Lozada
xHarbour:

ADEL( aArray, i ); ASIZE( aArray, LEN( aArray ) - 1 ) => aDel(aArray,i,.T.) //Third parameter stretchs the array.

aSize(aArray,Len(aArray)+1); aIns(aArray,i); aArray:=xIns => aIns(aArray,i,xIns,.T.) //Four parameter expands the array.

Regards