[VBS] Passage de paramètres dans une procédure

Passage de paramètres dans une procédure [VBS] - VB/VBA/VBS - Programmation

Marsh Posté le 17-03-2005 à 15:34:34    

Lo  [:chtigarix]  
 
D'après les docs vbs, le mode de passage par défaut des variables est le passage par référence. Pourtant le tableau de mon script ci-dessous n'a pas l'air de passer.
J'ai même indiqué dans ma procédure tab_init qu'il faut passer mon paramètre par référence mais rien n'y fait : valeur NULL dans mon tableau manifestement.
 
Par contre quand j'inclus le code de la procédure affiche_tab directement dans le tab_init là j'ai bien le bon résultat.
Je suis perplexe :/
 
Ca doit être tout bête ... Quelqu'un a une idée ?
 
Ci-dessous mon code (je n'y inclus que les parties remplissage et affiche du tableau, la partie opérationnelle du script ayant peu d'importance) :

Code :
  1. Option Explicit
  2. Dim arr_tab(5) 'variable globale à tout le script
  3. Tab_init(arr_tab)
  4. tableau_affiche(arr_tab)
  5. Sub Tab_init(ByRef tableau)
  6.     Dim Int_init_tab
  7.     Int_init_tab = 1
  8.     Do While int_init_tab <= Ubound(tableau)
  9.        tableau(int_init_tab) = 1
  10.        int_init_tab = int_init_tab + 1
  11.     Loop
  12. End Sub
  13. Sub Tableau_affiche(tableau)
  14.     Dim Int_affiche_tab
  15.     Int_affiche_tab = 1
  16.     Do While int_affiche_tab <= Ubound(tableau)
  17.         Wscript.echo tableau(int_affiche_tab) & " est " & int_affiche_tab
  18.         Int_affiche_tab = int_affiche_tab + 1
  19.     Loop
  20. End Sub


---------------
Retraité de discussions
Reply

Marsh Posté le 17-03-2005 à 15:34:34   

Reply

Marsh Posté le 17-03-2005 à 15:37:11    

Pas besoin de ByRef de toute manière, vu qu'un tableau est de type référence, et que tu ne l'assigne pas à un nouveau tableau...
 
[parenthèse : en VB, on ne met pas d'underscore dans les noms de variables et de procédures :o]

Reply

Marsh Posté le 17-03-2005 à 15:44:14    

Je mets des underscores si je veux :o
Oui bon je sais qu'il n'y a pas besoin de byref mais je l'ai rajouté pour être sûr que ça venait pas de çà :D


---------------
Retraité de discussions
Reply

Marsh Posté le 17-03-2005 à 15:49:18    

Non, tu ne mettera pas de underscore :o Le standard syntaxique veut que tu dois utiliser du PascalCase pour les variables et fonctions (genre VariablePouetTruc), et du camelCase pour les paramètre de fonction (genre paramDeTaFonction) :D
 

Reply

Marsh Posté le 17-03-2005 à 15:53:36    

M'en fous c'est du scripting. Je serais même pas obligé de déclarer les variables [:ddr555]
Mais pour la prochaines fois je virerai les underscore :jap:
 
C'est dur de se remettre dans le bain après 6 ans d'arrêt :/
J'ai l'impression d'être un lycéen en option initiation à l'info [:tinostar]


---------------
Retraité de discussions
Reply

Marsh Posté le 17-03-2005 à 15:57:25    

Sinon, fait une fonction qui te retourne le tableau initialisé :)

Reply

Marsh Posté le 17-03-2005 à 16:00:44    

Mouais j'y ai pensé mais bon je sais po comment ça va marcher.
 
Sinon pour le dimensionnement j'ai essayé de faire une constante TABSIZE, et ensuite Dim ArrTab(TABSIZE).
L'interpréteur a pas aimé :heink:


Message édité par ChtiGariX le 17-03-2005 à 16:01:04

---------------
Retraité de discussions
Reply

Marsh Posté le 17-03-2005 à 16:02:08    

Ce qui est marrant, c'est quand je lance ton script, ça fonctionne :D

Reply

Marsh Posté le 17-03-2005 à 16:07:02    

FlorentG a écrit :

Ce qui est marrant, c'est quand je lance ton script, ça fonctionne :D


Tu déconnes ?
Il affiche "1 est 1"
"2 est 1"
etc. ?
T'as quel interpréteur wsh ?


---------------
Retraité de discussions
Reply

Marsh Posté le 17-03-2005 à 16:07:27    

(ça me rassure je suis encore capable de pondre un truc aussi trivial [:tinostar])


---------------
Retraité de discussions
Reply

Marsh Posté le 17-03-2005 à 16:07:27   

Reply

Marsh Posté le 17-03-2005 à 16:09:01    

Il affiche :
'est 1'
'est 2'
'est 3'
 
Ah ouais en fait ça bug :cry: :D

Reply

Marsh Posté le 17-03-2005 à 16:09:48    

FlorentG a écrit :

Il affiche :
'est 1'
'est 2'
'est 3'
 
Ah ouais en fait ça bug :cry: :D


:D
Roh punaise je suis pas prêt de débugguer la partie intéressante du script  [:ddr555]


---------------
Retraité de discussions
Reply

Marsh Posté le 17-03-2005 à 16:12:44    

Attend, je cherche :D

Reply

Marsh Posté le 17-03-2005 à 16:22:35    

TROUVééééééééééééé !
 
Modifie la ligne :

Tab_init(arr_tab)


Par :

Tab_init arr_tab


Ou :

Call Tab_init(arr_tab)


 
Comme le dit la MSDN :

Citation :

You are not required to use the Call keyword when calling a procedure. However, if you use the Call keyword to call a procedure that requires arguments, argumentlist must be enclosed in parentheses. If you omit the Call keyword, you also must omit the parentheses around argumentlist.

Reply

Marsh Posté le 17-03-2005 à 16:24:59    

Mon héros :D


---------------
Retraité de discussions
Reply

Marsh Posté le 17-03-2005 à 16:25:42    

Je vais pouvoir maintenant m'atteler à la partie intéressante du script.
Je poste dès que ça marche :jap:


---------------
Retraité de discussions
Reply

Marsh Posté le 17-03-2005 à 16:26:16    

Yessss :)

Reply

Marsh Posté le 17-03-2005 à 16:29:41    

Pour l'instant mon script a pour seule fonction d'occuper 100% de ressources processeur [:gratgrat] :D


---------------
Retraité de discussions
Reply

Marsh Posté le 17-03-2005 à 16:37:55    

Oula [:le kneu]

Reply

Marsh Posté le 17-03-2005 à 16:44:25    

Ayan il n'occupe plus les 100% de ressources proc.
Mais le fait est que mon algo est foireux à mon avis [:tinostar]


---------------
Retraité de discussions
Reply

Marsh Posté le 17-03-2005 à 16:47:42    

Oui. Je pense :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed