Page 1 sur 1

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

Publié : jeu. 28/juil./2016 15:18
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:

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

Publié : jeu. 28/juil./2016 16:20
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:

Re: Transformer une chaine asii en chaine unicode

Publié : jeu. 28/juil./2016 16:58
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 ....

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

Publié : jeu. 28/juil./2016 17:20
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"