Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
#DEFINE / Arrays
Message
De
01/06/1999 20:32:44
 
 
À
01/06/1999 19:58:55
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Divers
Thread ID:
00223511
Message ID:
00225164
Vues:
14
>Try the following:
>
>PUBLIC aPubArray[2,3]
>aPubArray = 'Foo'
>PRIVATE aPrivArray[2,3]

The previous statement only hides any aPrivArray variable from a higher level. PRIVATE doesn't allocate the array and, after the above statement, the aPrivArray doesn't exist yet.

>aPrivArray = 'Bar'

Now, aPrivArray becomes a char string variable, not array.

>? DEMOARRAYERROR(@aPrivArray) && OK
>? DEMOARRAYERROR(@aPubArray) && meltdown
>
>FUNCTION DEMOARRAYERROR
>LPARAMETER aRefArray
>DIMENSION aRefArray[4,2]

Being a test program, it's not correct to reDIMENSION the parameter. This will make it to be array anyway! And this is what changes the results of your test.

Try the following:
PUBLIC aPubArray[2,3]
aPubArray = 'Foo'
PRIVATE aPrivArray
DIMENSION aPrivArray[2,3]
aPrivArray = 'Bar'
?"Call with private array:"
= DEMOARRAYERROR(@aPrivArray) && OK
?"Call with public array:"
= DEMOARRAYERROR(@aPubArray) && meltdown

FUNCTION DEMOARRAYERROR
PARAMETER aRefArray
?"Array length:", alen(aRefArray)
? aRefArray[1,1]
RETURN

This works just fine, with both PRIVATE and PUBLIC arrays.

Vlad
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform