Hi Patrick,

Le 06/01/2018 à 10:58, Patrick Gelin a écrit :

Below is a complet macro to manage Vectors of variants (With french
coments) . I've got a problem with unitary test (Cf. Sub Main) because
call to procedure 'v.Ajouter(duolet)' use always passage by reference
instead of a passage by value (ByVal) ! For all that, I delicately
manage a passage by value in my function...

I tested with a call to New operator in order to build specifics
instances at each call, like this :

    duolet = new __TDuolet
    duolet.key = "MONTAGNE"
    duolet.Item = 3
    v.Ajouter(duolet)

And it's fine, the duolet variable is a new one instance. But I don't
want the caller do all this stuff. I would like easier way to do ...


This
    v.Ajouter(ByVal duolet)
won't do. The ByVal specifier is only present at the declaration level, not the calling one.


You could just add a CreateDuolet() function to create the Duolets, like this :

Function CreateDuolet(ByRef pKey As String, pItem As Variant) As __TDuolet

        Dim MyDuolet As __TDuolet

        MyDuolet.key = pKey
        MyDuolet.item = pItem

        CreateDuolet = MyDuolet

End Function

(note : this function is not a class member)

Then, the caller has just to specify:

duolet = CreateDuolet("MONTAGNE", 3)
v.Ajouter(duolet)

or you might also simply call
v.Ajouter(CreateDuolet("MONTAGNE", 3))


BTW, I've noticed some glitches elsewhere, eg: in the _Expend() method, you've declared isPresserved as Optional but never test for its presence or not in the method body. This might lead to strange results, don't you think?
[BTW, BTW, shouldn't the method be called "_Expand" instead of "_Expend"?]


HTH,
--
Jean-Francois Nifenecker, Bordeaux


--
To unsubscribe e-mail to: [email protected]
Problems? https://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: https://wiki.documentfoundation.org/Netiquette
List archive: https://listarchives.libreoffice.org/global/users/
All messages sent to this list will be publicly archived and cannot be deleted

Reply via email to