[dev-fr] [Writer] Marques de paragraphes sous Windows : 1 ou 2 caractères ?

2006-04-23 Par sujet Adrien Delcour
 Bonjour.

 J'utilise OpenOffice sous Windows et il me semble que, dans les macros en Ooo 
Basic, le fait qu'une  marque de paragraphe soit lue (sous Windows, en tout 
cas) comme Chr(13)  Chr(10) pose un  problème : pour un curseur de texte, il 
n'y a là qu'un caractère,  mais dans une chaîne, la marque compte pour deux.
 J'ai soumis ce problème sur le forum anglophone le 19 de ce mois, mais  je 
n'ai pas reçu de réponse, donc je me permets d'essayer ici.

 Je voudrais écrire une macro qui filtre interactivement des caractères 
prohibés dans un texte, disons dans le texte principal du document actif.
 (Les caractères prohibés sont par exemple ceux dont le Asc() est  96, mais 
dans la pratique réelle, il s'agit de quelque chose de plus compliqué.)

Déplacer un curseur en l'étendant successivement sur chaque caractère, et 
sélectionner le curseur si le caractère renvoyé par la chaîne de ce curseur est 
prohibé, cela fonctionne correctement, mais c'est très lent.

J'ai donc essayé d'étendre le curseur sur des zones successives de 32767 
caractères, de lire la chaîne correspondante caractère par caractère, et, au 
cas où le n-ième caractère de cette chaîne est prohibé, de faire sélectionner 
le n-ième caractère de la zone couverte par le curseur.
C'est nettement plus rapide, mais c'est saboté par le fait que les marques de 
paragraphe comptent pour deux caractères dans les chaînes et pour un seul dans 
les mouvements de curseur.

Éventuellement, vous pourrez voir un exemple du code complet sur le forum 
anglophone, sous le titre Cursors and strings don't count the characters on 
the same way.
 (Il est maintenant au début de la seconde page du forum sur les macros.)

Évidemment, pendant qu'un indice va de 1 à la longueur de la chaîne, on peut 
utiliser un autre indice qui ne s'incrémente que si le caractère pointé par le 
premier indice n'est pas un Chr(13) suivi d'un Chr(10). C'est alors ce second 
indice qui indique à quel endroit de la zone du curseur se trouve le caractère 
prohibé.

 Dans les cas que j'ai testés, cela fonctionne correctement et nettement plus 
vite que la première méthode ci-dessus, mais enfin, ça me semble un peu un 
bricolage d'amateur et j'aimerais savoir s'il n'existe pas une solution 
officielle.

 Merci d'avance à qui me répondra.



Re: [dev-fr] [Writer] Marques de paragraphes sous Windows : 1 ou 2 caractères ?

2006-04-23 Par sujet Bernard Marcelly

Bonjour Adrien Delcour
Message du 2006-04-23 16:26:

 Je voudrais écrire une macro qui filtre interactivement des caractères 
prohibés dans un texte, disons dans le texte principal du document actif.
 (Les caractères prohibés sont par exemple ceux dont le Asc() est  96, mais 
dans la pratique réelle, il s'agit de quelque chose de plus compliqué.)



A mon avis, c'est une erreur de balayer caractère par caractère 
indépendamment des paragraphes. Tu peux avancer par paragraphe avec le 
curseur et récupérer la chaîne du paragraphe, si elle fait moins de 
65535 caractères. Ensuite tu travailles sur la chaîne.


Ce genre de question est à poser sur la liste [EMAIL PROTECTED]

   Bernard

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [dev-fr] [Writer] Marques de paragraphes sous Windows : 1 ou 2 caractères ?

2006-04-23 Par sujet Adrien Delcour


- Original Message - 
From: Bernard Marcelly [EMAIL PROTECTED]

To: dev@fr.openoffice.org
Sent: Sunday, April 23, 2006 8:46 PM
Subject: Re: [dev-fr] [Writer] Marques de paragraphes sous Windows : 1 ou 2 
caractères ?



Bonjour Adrien Delcour


A mon avis, c'est une erreur de balayer caractère par caractère
indépendamment des paragraphes. Tu peux avancer par paragraphe avec le
curseur et récupérer la chaîne du paragraphe, si elle fait moins de
65535 caractères. Ensuite tu travailles sur la chaîne.

Ce genre de question est à poser sur la liste [EMAIL PROTECTED]

   Bernard

Merci beaucoup. C'est vrai que c'est une façon bien simple de se débarrasser 
du problème.
Je pense même qu'il est impossible de faire un paragraphe de plus de 65535 
caractères. (J'ai essayé et cela a produit un crash.)


J'ai noté la bonne adresse.
Encore merci.
A.D.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]