aDel e Array multidimensionali

Moderator: Enrico Maria Giordano

Post Reply
User avatar
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

aDel e Array multidimensionali

Post 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
Best Regards,

Marco Turco
SOFTWARE XP LLP
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: aDel e Array multidimensionali

Post 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
User avatar
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Re: aDel e Array multidimensionali

Post by Marco Turco »

Funziona. Grazie.
Best Regards,

Marco Turco
SOFTWARE XP LLP
User avatar
César E. Lozada
Posts: 128
Joined: Wed Oct 26, 2005 12:18 pm
Location: Los Teques, Miranda, Venezuela

Re: aDel e Array multidimensionali

Post 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
Post Reply