Inicio > Visual Fox Pro > jahs1982 > array suma de elementos

array suma de elementos

Experto:
Usuario:
Fecha: 15/05/2008
Valoración: (4,00 sobre 5) Categoría: Visual Fox Pro
09/05/2008
victorcolo, usuario preguntando en Visual Fox Pro
Usuario
He creado un method con el siguiente procedimiento:
Tengo un select proveniente de varias tablas y el resultado lo guardo dentro de un array "laA".
En un ListBox con la configuracion siguiente rowsourcetype = 5-array y rowsource = this.Item , hago un DIMENSION thisform.ListBox.Item[alen(laA,1),n] , y ya tengo poblado mi ListBox, en una columna tengo valores numericos que los quiero sumar para desplegar esta suma en un TextBox.
Para sumar la columna con los valores numericos he dimencinado otro array "laB" asi: DIMENSION laB[alen(laA),n] , y luego realizo un FOR i = 1 to alen(laA,1).....Next.
Guardo mi valor en el TextBox asi: thisform.TextBox.Value = ArraySum(@laB)
Hago mi Function asi:
FUNCTION ArraySum(Total)
    LOCAL i, lnRetVal
    lnRetVal = 0
    FOR i = 1 to alen(Total)
    IF TYPE("Total[i,n]") = "N"        && [i,n] representa la columna con los valores
       lnRetVal = lnRetVal +Total[i,n]
    ENDIF
    ENDFOR
    RETURN lnRetVal
ENDFUNC
Problema1: VFP me manda un mensage de que no permite nested procudure dentro de methods.
He trasladado la funcion ArraySum hacia un .prg , pero alli me manda un mensage de error de que no encuentra la variable "Total"
Pregunta: Esta bien mi sintaxis? o que estoy haciendo mal?
Gracias

Victor
09/05/2008
victorcolo, experto respondiendo en Visual Fox Pro
Experto
entendi ... pero no bien.....
si tu problema es que  no reconose la variable total esporque no la estas declarando como un parametro.... intenta esto:
FUNCTION arraysum
       LPARAMETERS Total
........
ENDFUNC
 y tambien toma encuenta que estas pasando la variable  por referencia; si no te sige funcionando intenta pasarla por valor( no utilizando @)
15/05/2008
victorcolo, usuario preguntando en Visual Fox Pro
Usuario
Te comento, el function esta dentro del metodo donde tengo a mi select y donde dimencion mi array pero VFP no me permite colocar la esa function dentro del metodo, lo que hice fue quitar la parte de la funcion y quedarme con el For....EndFor y asi si me trabajo.
Estoy probando con la sugerencia que me mandaste, para lo cual estoy leyendo sobre ese tema para mandar valor ya sea por referncia o por valor para entenderlo mejor.
Gracias y te comentare de mis avances

Victor
Enlaces patrocinados