PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Récupération taille police caractère dans une chaîne RTF
Récupération taille police caractère dans une chaîne RTF
Débuté par Rick, 07 avr. 2024 10:55 - 4 réponses
Membre enregistré
5 messages
Posté le 07 avril 2024 - 10:55
Bonjour à tous et merci de bien vouloir m'aider.

Je souhaite récupérer la taille de la police d'un caractère (à une position donnée dans une chaine) à l'intérieur d'une chaîne RTF (sachant que dans ma chaine RTF tous les caractères n'ont pas la même taille).

Sauf que la syntaxe : "MaTaillePolice = Milieu(MachaineRTF,PositionX,1)..PoliceTaille" n'est pas valide avec du RTF

Je souhaite pouvoir effectuer un traitement ultérieur suivant la taille du caractère ciblé.
Comment puis-je faire?

Merci de votre aide !

--
Rick
Message modifié, 07 avril 2024 - 11:26
Membre enregistré
3 908 messages
Popularité : +227 (347 votes)
Posté le 07 avril 2024 - 16:06
Bonjour,
Je suppose qu'il s'agit d'une chaîne dans un champ RTF et non d'une variable de type chaine RTF.
Regarde du côté de la propriété Curseur et des fonctions RTF

--
Il y a peut être plus simple, mais, ça tourne.
Quand tout a échoué utilise l'option RTFM
Message modifié, 07 avril 2024 - 16:11
Membre enregistré
5 messages
Posté le 08 avril 2024 - 00:50
Bonsoir et merci pour ta réponse.
Effectivement il s'agit d'une chaîne dans un champ RTF. Je vais vais alors explorer la propriété Curseur (çà va être nouveau pour moi).
En revanche je n'ai pas compris l'option "RTFM", je ne trouve pas cette option dans l'aide en ligne.
Je suis clairement preneur d'un exemple de code si possible et je vais tenter de développer mon problème.

Ma chaîne contient : "FIREWIRE" , comme c'est un nom déposé le "F" et le "W" sont enregistré avec une taille de caractère 2 fois supérieure aux autres caractères même si tous sont en majuscule. Mais pour d'autres mots, je ne connais pas à l'avance le ou les caractères dans cette même situation.
La chaîne RTF initiale est stockée dans une rubrique d'un fichier de données, elle est ensuite chargée dans un champ RTF d'une fenêtre avant d'être manipulée par programmation.
En conséquence, je dois analyser chaque caractère de la chaîne et en connaître la taille pour un traitement spécifique.

En espérant avoir été plus clair, Merci pour la suite...

--
Rick
Message modifié, 08 avril 2024 - 06:49
Membre enregistré
3 908 messages
Popularité : +227 (347 votes)
Posté le 08 avril 2024 - 08:07
Rick a écrit :
En revanche je n'ai pas compris l'option "RTFM", je ne trouve pas cette option dans l'aide en ligne.

Cela fait partie de ma signature mais je reconnais que dans le cas de figure qui nous occupe, cela peut prêter à confusion.
RTFM n'est pas une option RTFXXX.
RTFM est un sigle, couramment utilisée dans les forums qui signifie "Read The Fu..ing Manual" (Lis cette Put... de Doc,) on trouve parfois la version plus polie RTMF (Lis d'abord la doc.) Cette expression se décline parfois en GIYF (Google is your friend) ou pour la version francisée GETA (Google est ton amis.)

Revenons ZA nos moutons
La doc de curseur est facile à trouver. En ce qui concerne la/les fonctions RTF nécessaire, il faut faire une recherche dans la doc.
1-Soit dans le sommaire de la doc papier
2-Soit dans la sommaire de l'aide locale
3-Soit en tapant RTF dans l'index de l'aide locale
4-Soit en faisant une recherche sur ton moteur de recherche préféré e.g. Windev Fonctions RTF

Dans tous les cas de figure on tombe sur la page : "Fonctions de gestion des champs RTF"
NAPUKA chercher.
On voit que RTFSélection correspond à ce que l'on désire faire.
Procedure TraiterTailleLettre()

nPos est un entier
nTailleLettre est un entier


POUR nPos=1 _À_ Taille(RTFVersTexte(SAI_Texte_RTF))
//Sélection d'un caractère
SAI_Texte_RTF..Curseur = nPos
SAI_Texte_RTF..FinCurseur = nPos+1
//Récupération de la taille et traitement
nTailleLettre = RTFSelection(SAI_Texte_RTF,rtfTaillePolice)
Trace(nTailleLettre)
SI nTailleLettre=2*TAILLE_NORMALE ALORS
Trace("Double")
FIN
FIN

SAI_Texte_RTF..Curseur=Taille(RTFVersTexte(SAI_Texte_RTF))+1 //Désélection


avec
CONSTANTE
TAILLE_NORMALE=8
FIN


--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué utilise l'option RTFM
Message modifié, 08 avril 2024 - 08:09
Membre enregistré
5 messages
Posté le 16 avril 2024 - 08:53
Merci infiniment Voroltinquo !
Je n'ai clairement pas votre niveau, merci pour votre aide.
Rick

--
Rick