Créer une chaine de caractères barrés (strikethrough text)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Créer une chaine de caractères barrés (strikethrough text)

Message par Marc56 »

Pour palier à l'absence de la balise [ s ] ou [ strike ] (strikeout, Strike through = ̶b̶a̶r̶r̶é̶ ̶ ) j'ai cherché pendant 1 heure sur le web et finalement trouvé que cela se fait très simplement grâce à l'unicode :P

J'ai fini par trouver cette page de convertisseur
:arrow: http://www.twiki.org/cgi-bin/view/Blog/ ... ry201211x1
L'explication intéressante pour le mode strikeout est au milieu de la page,
...Then we split the text string into an array of characters. We loop through the array, character by character and compose the output string as pairs of original character, followed by the Unicode character 0336, which strikes out the previous character. Finally we push the converted string into the text...
En résumé, pour convertir une chaine en ̶c̶h̶a̶i̶n̶e̶ ̶b̶a̶r̶r̶é̶e̶ ̶ , il faut:
  1. Découper la chaine en caractères (facile)
  2. Ajouter le code unicode 0336 après chaque caractère (gnnnii c'est là que je bloque) 8O
  3. Concatener la chaine (facile)
J'ai donc essayé d'en faire un code PB

Code : Tout sélectionner

Source.s = "Hello World!"

Debug "Source : " + Source

Destination.s

For i = 1 To Len(Source)
    Destination + Mid(Source, i, 1) + Chr(0336) ; Chr() pour unicode ?
Next

Debug "Encodé : " + Destination

*UTF8 = UTF8(Destination) ; hum ?

Debug "Unicode: " + PeekS(*UTF8, -1, #PB_UTF8)

MessageRequester("", PeekS(*UTF8, -1, #PB_UTF8))
Mais ça ne marche pas :?

Je n'ai encore jamais bricolé dans les transtypages en PB, donc malgré lecture et relecture, je dois surement faire une erreur bête ? :oops:

:idea: Le but serait de faire un minuscule programme prenant le clipboard en entrée et en sortie et nous permettant de mettre facilement du texte barré dans les posts

Comme vous le constatez si votre navigateur est bien configuré (encodage: unicode), le texte copié collé fonctionne parfaitement bien sur le forum. (enfin, celui généré depuis la page web, pas le mien :? )

:wink:
Dernière modification par Marc56 le ven. 29/juil./2016 6:22, modifié 3 fois.
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Créer une chaine de caractères barrés (strikethrough text)

Message par Marc56 »

J'ai trouvé :P (100x sur le métier...)
Juste le '$'

Code : Tout sélectionner

Txt_Source.s = "Hello World! abcde ABCDEFGHIJKLMNOPQRSTUVWXYZ "
Txt_encode.s = " "

For i = 1 To Len(Txt_Source)
    Txt_encode + Mid(Txt_Source, i, 1) + Chr($0336)
Next

LoadFont(0, "Verdana", 30)
OpenWindow(0, 0, 0, 800, 200, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(0, 10, 10, 780, 100, Txt_encode)
SetGadgetFont(0, FontID(0))

SetClipboardText(Txt_encode)

Repeat :  Until WaitWindowEvent() = #PB_Event_CloseWindow
CTRL+V

H̶e̶l̶l̶o̶ ̶W̶o̶r̶l̶d̶!̶ ̶a̶b̶c̶d̶e̶ ̶A̶B̶C̶D̶E̶F̶G̶H̶I̶J̶K̶L̶M̶N̶O̶P̶Q̶R̶S̶T̶U̶V̶W̶X̶Y̶Z̶ ̶

I̶l̶ ̶y̶ ̶a̶ ̶c̶e̶r̶t̶a̶i̶n̶s̶ ̶c̶a̶r̶a̶c̶t̶è̶r̶e̶s̶ ̶q̶u̶'̶i̶l̶ ̶p̶r̶e̶n̶d̶ ̶m̶a̶l̶,̶ ̶i̶l̶ ̶f̶a̶u̶d̶r̶a̶ ̶d̶o̶n̶c̶ ̶f̶a̶i̶r̶e̶ ̶u̶n̶ ̶f̶i̶l̶t̶r̶e̶ :idea:
J̶'̶a̶i̶ ̶e̶s̶s̶a̶y̶é̶ ̶a̶u̶s̶s̶i̶ ̶d̶e̶ ̶l̶u̶i̶ ̶m̶e̶t̶t̶r̶e̶ ̶u̶n̶ ̶e̶s̶p̶a̶c̶e̶ ̶e̶n̶ ̶p̶r̶e̶m̶i̶e̶r̶,̶ ̶m̶a̶i̶s̶ ̶ç̶a̶ ̶n̶e̶ ̶m̶a̶r̶c̶h̶e̶ ̶p̶a̶s̶ :|
P̶o̶u̶r̶q̶u̶o̶i̶ ̶l̶e̶ ̶H̶ ̶e̶t̶ ̶l̶e̶ ̶W̶ ̶n̶e̶ ̶s̶o̶n̶t̶ ̶i̶l̶s̶ ̶p̶a̶s̶ ̶c̶o̶n̶v̶e̶r̶t̶i̶s̶ 8O

Edit: C'est parce que les caractères sont barrés d'une manière incomplète selon la fonte
(cf nouvel exemple avec une fonte bien plus grande) le 'H' et le 'W' en fonte Consolas sont barrés de deux petits traits.

Je me sert déjà de ce nouvel outil 8) Il ne reste plus qu'à lui mettre un EditorGadget, lui donner une toute petite taille, une trayicon etc

À suivre...
:wink:
Dernière modification par Marc56 le ven. 29/juil./2016 6:23, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Transformer une chaine asii en chaine unicode

Message par falsam »

Joli joli ce convertisseur.
Marc56 a écrit :J'ai essayé aussi de lui mettre un espace en premier, mais ça ne marche pas

Code : Tout sélectionner

Txt_encode.s = " " + Chr($0336)
Marc56 a écrit :Pourquoi le H et le W ne sont ils pas convertis ?
Peut être un souci de police ....
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Créer une chaine de caractères barrés (strikethrough text)

Message par Marc56 »

falsam a écrit :Joli joli ce convertisseur. [/code]Merci
Marc56 a écrit :J'ai essayé aussi de lui mettre un espace en premier, mais ça ne marche pas

Code : Tout sélectionner

Txt_encode.s = " " + Chr($0336)
Ah, l'oubli bête! :P
Marc56 a écrit :Pourquoi le H et le W ne sont ils pas convertis ?
Peut être un souci de police ....
Oui, c'est effectivement cela. (le H et le W ont deux traits au lieu d'un seul)

Merci
:)

PS. Je réédite mon titre de topic pour être plus significatif que "Transformer une chaine asii en chaine unicode"
Répondre