2em session

dib.fred Messages postés 14 Date d'inscription jeudi 13 novembre 2003 Statut Membre Dernière intervention 15 mars 2005 - 6 sept. 2004 à 10:53
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 6 sept. 2004 à 11:58
Pouvez vous me depanner en repondant a ces questions

merci d'avance
bonne continuation

Quels types de variables sont créés par la déclaration suivante si Option Strict est désactivé et pourquoi ?
Dim a, b As Integer, c


15. Quelle est la valeur de c après l'exécution du code suivant et pourquoi ?
Dim c As Integer
c = 1
CheckValue(c)
...
Sub CheckValue(ByVal iValue As Integer)
...
iValue = 13
End Sub


16. Si vous disposez d'un jeu d'enregistrements (Recordset) ouvert appelé rs et d'un contrôle TextBox appelé txtData, laquelle des instructions suivantes crée une erreur de compilation ou d'exécution lorsque Option Strict est désactivé ? Pourquoi ?
a. txtData.Text = rs(0)
b. txtData.Text = rs.Fields.Item(0)
c. txtData.Text = rs.Fields(0).Value

1 réponse

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
6 sept. 2004 à 11:58
Alors, Dim a, b As Integer, c te déclare trois variables :
a qui est de type Variant, b qui est de type Integer, et c qui est de type Variant.
Pourquoi ? Par que seul b a un type définit, les deux autres n'ayant pas de type spécifié, VB les interprête comme des types "indéfinits" qui peuvent prendre n'importe quel type de valeur, autrement dit, ce sont des types Variant.

Dim c As Integer
c = 1
A ce niveau là, c = 1

Sub CheckValue(ByVal iValue As Integer)
...
iValue = 13
End Sub

A ce niveau là, iValue = 13

CheckValue(c)
Avant l'appel à CheckValue, c 1, après l'appel, c 1. Pourquoi ? Parce que tu passe une copie de C à ta sub, et non c lui même ! Du coup, la copie de c passe à 13, mais c n'est pas modifié ! Pour modifier sa valeur, passe c par référence et non par valeur :
Sub CheckValue(ByRef iValue As Integer)
...
iValue = 13
End Sub

Pour le 16., c'est à tester soit même. Pourquoi ca provoquera des erreurs ? Tout simplement parce qu'il n'y a pas de fonction par défaut pour un recordset ou un field, ou alors, cette fonction ne renvoie pas un type compatible avec la propriété Text de ton textbox.

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
Rejoignez-nous