Message de MIPPS date 2007-06-30 14:59 :
Bonjour,
Voici tout d'abord le code pour illustrer ma question :
Sub TestOptional(optional Valeur2 as integer)
Dim Valeur3 as integer
if ismissing(Valeur2) then
Valeur2 = thisComponent.currentSelection.CellAddress.row
Valeur3 = thisComponent.currentSelection.CellAddress.row
End if
msgbox("Valeur2 = " & Valeur2)
msgbox("Valeur3 = " & Valeur3)
Valeur2 = Valeur2+1
Valeur3 = Valeur3+1
msgbox("Valeur2 = " & Valeur2)
msgbox("Valeur3 = " & Valeur3)
End sub
Admettons que je sois sur la ligne 12 lorsque je l'exécute (sans passer de paramètre donc
"Valeur2 is missing"), j'ai :
les 2 premiers msgbox :
Valeur2 = 12
Valeur3 = 12
les 2 suivants :
Valeur2 = 12
Valeur3 = 13
Alors ai-je loupé quelque chose parce que je ne vois pas ce qu'il y a de
spécial dans mon code pour que ma Valeur2 ne change pas après son init dans le
if du ismissing. Il me semble que ça marchait avec la version précédente d'OOo.
D'ailleurs je plante bcp plus souvent avec la 2.2.0 qu'avec la précédente.
Je suis en OOo 2.2.0, WXPH, JRE 6 upd 1.
Merci d'avance.
Marc.
Bonjour,
Oui, je fais la même constatation sur 2.2.0 avec Windows XP. C'est
une bogue assez tordue.
En fait la propriété Row est de type Long. Ca ne devrait pas gêner avec
une ligne de rang 12, mais si je déclare Valeur2 As Long l'anomalie
disparaît.
Elle disparaît aussi en forçant la conversion à Integer avec :
Valeur2 = CInt(thisComponent.currentSelection.CellAddress.row)
On peut faire une preuve de bogue encore plus démonstrative:
Sub test2(optional v As Integer)
Dim p As Long
p = 11
if isMissing(v) then
v = p
end if
MsgBox("v initial : " & v)
v = v +100
MsgBox("v modifié ? " & v)
End Sub
Quand je l'exécute sans argument, v n'est pas incrémentée. Et v est bien
du type Integer. Si je déclare p As Integer, v s'incrémente.
Cette bogue existe aussi dans la version 1.1.5.
Il ne te reste plus qu'à faire un rapport dans IssueZilla :)
______
Bernard
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]