12 messages in org.openoffice.fr.progRe: [prog] [OOoBasic] Comment détecte...
FromSent OnAttachments
BobJul 23, 2004 3:09 pm 
Bernard MarcellyJul 25, 2004 12:28 am 
BobJul 26, 2004 12:17 pm 
Laurent GodardAug 2, 2004 8:49 am 
Bernard MarcellyAug 3, 2004 12:50 am 
Laurent GodardAug 3, 2004 1:21 am 
BobAug 3, 2004 1:46 am 
BobAug 9, 2004 2:50 am 
Bernard MarcellyAug 9, 2004 6:11 am 
BobAug 9, 2004 2:16 pm 
Bernard MarcellyAug 10, 2004 4:56 am 
BobAug 31, 2004 2:50 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] [OOoBasic] Comment détecter si u ne sub ou function est implémentée dans un module ?Actions...
From:Bob (mlo@bobiciel.com)
Date:Aug 3, 2004 1:46:17 am
List:org.openoffice.fr.prog

Bonjour Bernard et Laurent,

Bernard Marcelly wrote:

At 2004-08-02 17:50, Laurent Godard wrote:

Bonjour,

La solution de Bernard fonctionne, pas de problemes

Oui, mais pas complètement. En fait pour que la fonction ne soit pas appelée lors du test d'existance, il faut lui passer des paramètres incohérents (plutôt que aucun comme le propose Bernanrd), car si les paramètres ne sont pas utilisés dans la fonction, OOoBasic ne génère pas d'erreur !

Et en plus, si une fonction de même nom existe dans un autre module, OOoBasic prend l'initiative de l'exécuter !!! à la place de celle absente. Exemple :

Module modA function fonc1 function fonc2

Module modB function fonc2

modB.fonc1 exécute modA.fonc1 (pas cool :-()

Voici une autre approche manipulant les modules et library de OOo ( . .)

'monModule est une chaine de caractere 'On y recherche la fonction GetStarOfficeLocale()

if instr(monModule,"Function GetStarOfficeLocale()")<>0 then print "La fontion est présente" else print "la fonction est absente" endif

Oui, mais si on n'a aucune garantie sur le contenu du module on aura des surprises: - s'il y a un espace de plus ou une tabulation entre Function et GetStarOfficeLocale on ne verra pas la définition - pareil s'il y a un espace entre GetStarOfficeLocale et la première parenthèse, etc - pareil si on n'a pas utilisé de parenthèse - on détectera à tort la définition si elle se trouve dans un commentaire ou dans un string - si on a défini une Sub avec ce nom on ne la détectera pas.

Bref, il faudrait faire une analyse syntaxique complète, et ç'est pas évident !

Je n'irai pas jusque là mais, j'ai commencé a faire une fonction qui permet de s'affranchir de : - la casse - les espaces - la mise en commentaires Le résultat sera enregistré dans des variables statiques pour ne pas faire le boulot plusieurs fois

Merci pour vos réponses

Bonne journée