Page 1 sur 1

[R] Emploi de #forceref

Posté : dim. 01 déc. 2013 13:03
par aulus
Bonjour,

A l'intérieur d'une fonction, je déclare une variable-tableau globale, ne pouvant la déclarer en tête de code du fait que je n'en connais pas la taille :

Code : Tout sélectionner

global $tableau[UBound($Base)]
J'obtiens, bien entendu, un warning lorsque je teste mon programme, me conseillant de faire ma déclaration en début de code. Pour éviter ce warning, j'ai codé :

Code : Tout sélectionner

#forceref $tableau
Je ne sais sans doute pas utiliser ce dernier code car le warning ne disparaît pas.

Pourriez-vous me dire comme je dois m'y prendre ? Dois-je bien faire suivre #forceref par le nom de la variable ? Où dois-je placer cette ligne de code ?

Je vous remercie.

Re: [..] emploi de #forceref

Posté : dim. 01 déc. 2013 13:28
par TT22
Salut, plutôt que d'utiliser #forceref en début de script, utilise Global pour un tableau de taille 1 que tu redimensionne dans ta fonction...
► Afficher le texte

Re: [..] emploi de #forceref

Posté : dim. 01 déc. 2013 14:23
par aulus
Merci TT22.

Votre solution est parfaite.

Merci beaucoup.

Re: [R] emploi de #forceref

Posté : dim. 01 déc. 2013 15:07
par TT22
Heureux de t'avoir aidé :)

Re: [R] emploi de #forceref

Posté : dim. 01 déc. 2013 15:59
par mikell
Plus simplement, on déclare la variable en global en tête de script, et dans la fonction on la définit comme tableau en s'appuyant sur les proriétés de Dim
le fichier d'aide a écrit :Dim = Local scope if the variable name doesn't already exist globally (in which case it reuses the global variable!)

Code : Tout sélectionner

Global $foo
_bar()
Msgbox(0,"", UBound($foo))
If IsDeclared("foo") = 1 Then Msgbox(0,"", "$foo est une variable Globale")

Func _bar()
    Dim $foo[42]
    ; etc
EndFunc

Re: [R] emploi de #forceref

Posté : dim. 01 déc. 2013 17:33
par aulus
Impeccable. Merci beaucoup