Le param est en "var", donc ça veut dire que la fonction peut modifier la variable pour que l'appelant reçoive la nouvelle valeur.
Si tu passes "j+1" et que la fonction le modifie, ça va être un peu compliqué à gérer Donc tu dois soit virer le var soit mettre ton j+1 dans une variable temporaire que tu passes à la fonction, selon que la fonction doit pouvoir modifier la valeur de j ou non (à toi de voir ; j'ai pas lu tout le code)
Mais vu que t'as mis tous les paramètres en "var" je suppose que c'est une erreur : var dans ce cas-ci ne veut pas dire que tu déclares un param, mais plutôt que la valeur du param doit être renvoyée à l'appelant.
Pour les params,
- soit tu ne mets rien : fonction(param: integer)
dans ce cas il copie la valeur sur la pile pour apeler la fonction, et les modifs que la fonction fait à param sont perdues quand on sort de la fonction
- soit tu mets var : fonction(var param: integer)
dans ce cas il passe le pointeur et si la fonction modifie param la nouvelle valeur sera également appliquée à l'appelant (vu que fonction modifie la variable de l'appelant plutôt d'avoir son propre param)
- soit tu mets out : fonction(out param: integer)
idem que var sauf que la valeur d'origine n'est pas prise en compte, à utiliser si fonction modifie param à tous les coups sans se soucier de la valeur antérieure
- soit tu mets const : fonction(const param: integer)
dans ce cas on passe aussi par pointeur, mais la fonction ne peut pas modifier le param
Dans la majorité des cas il vaut mieux préciser var/out/const (passage par pointeur, plus efficace), sauf si la fonction doit pouvoir modifier le paramètre sans que cette modif n'ait d'influence à l'extérieur
Message édité par antp le 09-12-2005 à 11:21:43
---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire