Page 1 sur 1

[Résolu] [Writer] Erreur: Valeur de propriété incorrecte

MessagePublié: 24 Juil 2010 18:19
par OlivierR
Bonjour à tous,

J’essaie de récupérer les informations du correcteur orthographique, mais un simple test sur la validité d’un mot ne passe pas, et me renvoie invariablement l’erreur: Valeur de propriété incorrecte.

Code : Tout sélectionner   AgrandirRéduire
Sub Spell
   Dim locale As New com.sun.star.lang.Locale
   Dim word As String
   Dim bWordValid As Boolean

   locale.Language="fr" 'ISO 639
   locale.Country="FR"  'ISO 3166
   
   LinguService = createUnoService("com.sun.star.linguistic2.LinguServiceManager")
   spellChecker = LinguService.getSpellchecker()

   if not spellChecker.hasLocale(locale) Then
      msgbox "Le dictionnaire français est introuvable"
      exit sub
   endif
   
   'XRay spellChecker
   
   word = inputbox("Mot à vérifier:")
   while word <> ""
      bWordValid = spellChecker.isValid(word, locale, array())
      if bWordValid then
         msgbox word + " est valide"
      else
         msgbox word + " n’est pas valide"
      endif
      word = inputbox("Mot à vérifier:")
   wend
End Sub

Ce code est quasi-identique à celui récupéré ici (qui provoque la même erreur).

Cf. API: http://api.openoffice.org/docs/common/r ... ecker.html

Une idée de l’origine du problème?
Merci d’avance.

Fichier de test:
test_spellcheck.odt
(9.82 Kio) Téléchargé 102 fois

Re: [Writer] Erreur: Valeur de propriété incorrecte

MessagePublié: 24 Juil 2010 18:40
par Jean-Louis Cadeillan
tu es sûr du troisième argument de la méthode isValid ?
Que contient array() ? Où est-il défini ?
A+
Jean-Louis

Re: [Writer] Erreur: Valeur de propriété incorrecte

MessagePublié: 24 Juil 2010 21:16
par Churay
Bonsoir,

Jean-Louis Cadeillan a écrit:tu es sûr du troisième argument de la méthode isValid ?
Que contient array() ? Où est-il défini ?

Non, ça c'est bon : c'est une structure vide.
Il est impératif de passer un vecteur en paramètre (syntaxe unique quelle que soit la fonction).
Parfois, comme c'est le cas ici, le vecteur est vide parce que la fonction appelée n'en a pas besoin, mais la syntaxe est respectée.
Donc plutôt que de définir une variable (Dim arg()) qui ne sera pas utile, et passer en argument cette variable Arg() vide, on utilise souvent Array() qui passe un équivalent de Arg(), vide. (Je ne sais pas si je suis très clair, mais je me comprends :roll: )

Par contre, j'ai remplacé

Code : Tout sélectionner   AgrandirRéduire
       LinguService = createUnoService("com.sun.star.linguistic2.LinguServiceManager")
       spellChecker = LinguService.getSpellchecker()

par
Code : Tout sélectionner   AgrandirRéduire
       Dim v_spellChecker As Variant
       v_spellChecker = createUnoService("com.sun.star.linguistic2.SpellChecker")

trouvé dans un exemple de Pitonyak
Le Dim parce que j'aime bien définir clairement ce que j'utilise.
Et ne pas utiliser un nom déjà utilisé or SpellChecker est déjà utilisé...
C'est comme utiliser une variable nommée For ou Next : ça coince.

et bien évidemment
Code : Tout sélectionner   AgrandirRéduire
          bWordValid = spellChecker.isValid(word, locale, array())

par
Code : Tout sélectionner   AgrandirRéduire
          bWordValid = v_spellChecker.isValid(word, locale, array())


et ça marche

cOOordialement

PS : Merci de m'avoir fait découvrir spellchecker ;)

Re: [Writer] Erreur: Valeur de propriété incorrecte

MessagePublié: 25 Juil 2010 00:03
par OlivierR
:shock: Basic ne tient pas compte de la casse non plus pour les noms de variables!
J’ai cherché pendant des heures ce qui clochait avec le troisième paramètre. :roll: J’ai bien fait de poser la question…
Merci pour le coup de main.