[Résolu][Basic] Appel de paramètre et variable non définie

Discussions et questions sur tout ce qui concerne la programmation sous StarOffice NeoOffice ou OpenOffice.org tous langages et tous modules confondus.

Modérateur: Vilains modOOos

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Basic] Appel de paramètre et variable non définie

Messagepar sldf » 06 Nov 2009 10:59

Bonjour,

Je souhaite mettre en place une fonction qui puisse être appelée soit par un bouton soit par une procédure. Le paramètre transmis contient une URL.
* Dans le cas d'un bouton appelant --> le paramètre est le bouton lui même (objet) et son tag contient l'URL.
* Dans le cas d'une proc appelante --> le paramètre est directement l'URL (chaine de caractère).

Code: Tout sélectionner   AgrandirRéduire
....
Dim URL As String
URL = ConvertToUrl("C:/blabla/.../Treso.xls")

Dim test As String
test = Tester(URL)
....

'**************************************************************************************
Function Tester (oEvnt As Variant) As String
Tester = ""

Dim ParamURL As String
If IsObject(oEvnt)         Then
   Dim CtrlBu As Object, ButtName As String
   CtrlBu   = oEvnt.source.model                ' ctrl objet bouton
   ButtName = CtrlBu.name                       ' nom du bouton appelant
   If IsNull(CtrlBu)       Then Exit Function
   paramURL = CtrlBu.Tag                        ' reserver la valeur de texte
Else
   paramURL = oEvnt
End If

Tester = "Fin test : '" & paramURL & "'"
End Function


Le résultat de cet appel est : Variable d'objet non définie

Ais je mal utilisé le type Variant ?
Merci d'avance pour vos explications.

Le Modérateur a écrit: :alerte: En plus du code, fournissez avec un fichier complet. Cela augmentera vos chances de réponse en évitant d'avoir à recréer quelque chose qui au final, pourrait ne pas convenir.
Dernière édition par sldf le 06 Nov 2009 15:25, édité 1 fois au total.
OOO310m19 & OpenOffice 3.1.1 sous Windows Vista
sldf
Membre lOOoyal
Membre lOOoyal
 
Messages: 29
Inscrit le: 23 Mar 2009 17:25

Re: [Basic] Appel de paramètre et variable non définie

Messagepar bm92 » 06 Nov 2009 14:47

Bonjour,
sldf a écrit:Je souhaite mettre en place une fonction qui puisse être appelée soit par un bouton soit par une procédure. Le paramètre transmis contient une URL.
* Dans le cas d'un bouton appelant --> le paramètre est le bouton lui même (objet) et son tag contient l'URL.
* Dans le cas d'une proc appelante --> le paramètre est directement l'URL (chaine de caractère).

Ce type de codage est à éviter, car le paramètre oEvnt dans ta routine représente n'importe quoi :shock:
De plus cela déclenche une bogue de Basic, qui n'aime pas que dans une même procédure on utilise une variable à la fois comme objet et comme variable ordinaire, voir Issue 70616.

La bonne solution est (comme souvent) de décomposer le problème.
  1. la fonction finale (Tester) utilise en argument un paramètre String, qui est une URL.
  2. ton bouton déclenche une Sub (actionBouton) qui commence par obtenir l'URL, puis appelle la fonction Tester
  3. pour les autres usages, tu appelles directement la fonction Tester, avec une URL en argument.
Code: Tout sélectionner   AgrandirRéduire
....
Dim URL As String
URL = ConvertToUrl("C:/blabla/.../Treso.xls")

Dim test As String
test = Tester(URL)
....

'**************************************************************************************
Function actionBouton (oEvnt As Variant) As String

Dim ParamURL As String, resultat As String
Dim CtrlBu As Object, ButtName As String
CtrlBu   = oEvnt.source.model                ' ctrl objet bouton
ButtName = CtrlBu.name                       ' nom du bouton appelant
paramURL = CtrlBu.Tag                        ' reserver la valeur de texte
resultat = Tester(ParamURL)
End Sub


Function Tester(adrURL As String) As String
Tester = "Fin test : '" & adrURL & "'"
End Function

C'est-y pas plus clair comme ça ? :)
Bernard

OpenOffice.org 1.1.5 fr + patch securite 1 et 2
OpenOffice.org 3.1.1 en + plusieurs langpacks
MS-Windows XP Home SP3
bm92
SuppOOorter
SuppOOorter
 
Messages: 1377
Inscrit le: 26 Nov 2005 15:42

Re: [Basic] Appel de paramètre et variable non définie

Messagepar sldf » 06 Nov 2009 15:24

J'avais pensé à cette solution, elle x 2 les noms de macro (1 Sub + 1 Fonction) --> mais bon si ça bogue, ça bloque, on fera avec :arrow:

Merci pour la réactivité.
OOO310m19 & OpenOffice 3.1.1 sous Windows Vista
sldf
Membre lOOoyal
Membre lOOoyal
 
Messages: 29
Inscrit le: 23 Mar 2009 17:25

Re: [Résolu][Basic] Appel de paramètre et variable non définie

Messagepar bm92 » 06 Nov 2009 17:26

C'est moins une question de bogue qu'une question de modularité : la fonction fait son travail, pas plus. C'est l'utilisateur de la fonction qui doit lui présenter les paramètres qu'elle attend. Faire l'économie d'une Sub (ou de quelques instructions) coûte cher en terme de maintenabilité.
Bernard

OpenOffice.org 1.1.5 fr + patch securite 1 et 2
OpenOffice.org 3.1.1 en + plusieurs langpacks
MS-Windows XP Home SP3
bm92
SuppOOorter
SuppOOorter
 
Messages: 1377
Inscrit le: 26 Nov 2005 15:42


Retour vers Macros et API

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités