Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Problema son manejo de propiedades array en clases
Message
From
28/08/1998 09:39:03
 
 
To
27/08/1998 22:00:38
General information
Forum:
Visual FoxPro
Category:
Classes - VCX
Miscellaneous
Thread ID:
00130736
Message ID:
00130965
Views:
27
>>Tengo una clase Custom "manejo" en Visual Foxpro con una propiedad array llamada "lista", he intentado utilizar esta propiedad en un metodo de la clase pero cuando lo recibo en el procedimiento el parametro con que recibo a "lista" ya no es reconocido como un array si no como un caracter.
>>
>>En detalle estoy realizando lo siguiente:
>>
>>defino propiedad lista como manejo.lista(1)
>>dimension this.lista(3)
>>this.lista(1)="uno"
>>this.lista(2)="dos"
>>this.lista(3)="tres"
>>sarta=""
>>this.VECTORASARTA(this.lista,sarta)
>>
>>
>>** metodo VECTORASARTA
>>** traslada contenido del vector a una sarta
>>parameters vector,sarta,longitud
>>tempo=space(2)
>>longitud=0
>>for i=1 to alen(vector,1)
>> m.car=vector(i)
>> tempo=tempo+m.car
>>endfor
>>sarta=substr(tempo,3)
>>
>>** se genera el error
>>--> vector no es una array
>>
>>En estos momentos solucione el problema de la siguiente forma:
>>
>>=ACOPY(THIS.lista, VECTOR01)
>>DO vectorasarta WITH VECTOR01 , sarta
>>
>>esta forma funciona pero quisiera saber cual es el error en la forma 1;
>
>Jorge:
>
>Debes saber que cuando quieres pasar un array como parámetro de una función definida por el usuario o un método que hayas creado para un objeto debes pasarlo por valor es decir que debes poner una "@" justo antes del nombre del array como sigue:
>
>this.VECTORASARTA(@this.lista,sarta)
>
>Aunque no lo he probado estoy seguro que eso solucionará tu problema. Si omites poner la arroba antes del nombre el método asumirá que le envías como parámetro una variable, es por eso que te ocurre que lo reconoce como una variable de tipo carácter.
>
>Saludos.
El uso de '@' es para pasar parametros por referencia, que en pocas palabras significa pasar la direccion de memoria de la variable (o arreglo) en lugar de los valores. De esta manera cualquier cambio hecho en la funcion o procedimiento ejecutado se refleja en el codigo que hizo la llamada. El ejemplo del mensaje original trata de pasar el arreglo por valor.
Espero que sea de ayuda..
J.Crescencio
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform