Page 1 sur 1

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

Publié : 24 juil. 2010 17: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

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

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

Publié : 24 juil. 2010 17: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

Publié : 24 juil. 2010 20: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

       LinguService = createUnoService("com.sun.star.linguistic2.LinguServiceManager")
       spellChecker = LinguService.getSpellchecker()
par

Code : Tout sélectionner

       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

          bWordValid = spellChecker.isValid(word, locale, array())
par

Code : Tout sélectionner

          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

Publié : 24 juil. 2010 23: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.