Page 1 sur 1

[R]Presse-Papier: impossible d'effacer certains caractères

Posté : jeu. 12 août 2010 21:41
par martinbrait
Bonsoir,
J'ai stocké le contenu texte du presse-papier dans une variable, et j'essaie d'en nettoyer le contenu. J'ai beau m'escrimer à tenter d'effacer certains caractères "vides" stockés dans ma variable de presse-papier, je ne parviens absolument pas à les détruire.


Ce que je mets dans le presse-papier est le contenu d'un mail, sous thunderbird.

Je précise que dans ma situation, lorsque je parcours caractère par caractère mon mail,
je me rends compte d'anomalies lorsque j'ai en retour un code compris entre Chr(48) et Chr(57),
et que je vois dans mon presse papier l'affichage de carrés vides.
J'imagine que c'est parce que le contenu d'un presse-papier est toujours au format string(?)
Il s'agit des caractères Chr(49) à Chr(57).
Or, en temps normal:
$chr(48) va retourner : 0
$chr(49) va retourner : 1
$chr(50) va retourner : 2
$chr(51) va retourner : 3
$chr(52) va retourner : 4
$chr(53) va retourner : 5
$chr(54) va retourner : 6
$chr(55) va retourner : 7
$chr(56) va retourner : 8
$chr(57) va retourner : 9
Dans ma situation, ils sont en fait transcrits dans ma variable,
comme des caractères non reconnus (carrés vides)
► Afficher le texte

Est-ce normal? Merci, et à bientôt j'espère! :shock:

Re: [..]Presse-Papier: impossible d'effacer certains caractères

Posté : jeu. 12 août 2010 21:43
par Iste
Sans avoir fait de test, votre boucle For $j = LongueurMaxduPressePapier to 1 step -1 est inutile, StringReplace() parcourt déja toute la chaine. Il nous reste donc

Code : Tout sélectionner

For $i = 49 to 57
    StringReplace($ContenuDuPressePapier,Asc($i),"")
    StringReplace($ContenuDuPressePapier,Chr($i),"")
Next
PS : j'ai ajouté la balise de code a votre message, merci d'y penser a l'avenir

Re: [..]Presse-Papier: impossible d'effacer certains caractères

Posté : jeu. 12 août 2010 21:46
par martinbrait
Merci! Je réessaie tout de suite d'effacer mes "chiffres" carrés vides, récalcitrants!
Je n'ai pourtant que du texte ordinaire dans mon message, et par conséquent, la même chose dans le presse-papier(?)

Rien n'a changé. Je présume que mon message thunderbird est écrit dans un encodage spécia(?)

J'utilise cette instruction, pour stocker l'information dans le presse-papier:

Code : Tout sélectionner

$bak = ClipGet()
MsgBox(0, "Clipboard contains:", $bak)

Re: [..]Presse-Papier: impossible d'effacer certains caractères

Posté : jeu. 12 août 2010 21:47
par Tlem
Vous n'expliquez pas comment vous faites pour récupérer la chaine à traiter.

Juste au cas ou, est-ce que ceci ne vous conviendrait pas ?

Code : Tout sélectionner

#Include <Clipboard.au3>

$ClipText = _ClipBoard_GetData($CF_TEXT)
MsgBox(0, '', $ClipText)

Re: [..]Presse-Papier: impossible d'effacer certains caractères

Posté : jeu. 12 août 2010 22:00
par martinbrait
Bonsoir!
Je viens d'utiliser l'instruction que vous préconisez, mais je suis toujours en échec pour effacer mes fameux caractères mal codés, directement copiés depuis un message du navigateur MozillaThunderbird. :?

J'ai également changé les options d'encodage des caractères sous thunderbird, mais il n'y a eu aucun changement.

Re: [..]Presse-Papier: impossible d'effacer certains caractères

Posté : jeu. 12 août 2010 22:21
par Tlem
Peut-on voir une bride de cette fameuse chaine avec ces caractères récalcitrants ?

Re: [..]Presse-Papier: impossible d'effacer certains caractères

Posté : jeu. 12 août 2010 22:50
par martinbrait
LE TEXTE ORIGINAL EST JUSTE AU DESSOUS, AVEC LES ESPACES A ELIMINER!
Il suffit de copier la séquence ci-dessous directement dans le presse papier, pour se trouver dans la même situation, avec les espaces impossibles à éliminer! :x Je voudrais que toutes les phrases se suivent avec un espace d'intervalle uniquement, entre chaque phrases!
► Afficher le texte

Je croyais qu'il fallait effacer les caractères de tabulation Chr(10), Chr(13), bien sûr.
Les instructions préconisées StringReplace($ClipText,@CR,""), StringReplace($ClipText,@LF,"")
ne produisent aucun effet dans mon cas.
StringReplace($ClipText,@TAB,"")
StringReplace($ClipText,@CRLF,"")
sont également sans effet!
► Afficher le texte
Un forum excel me fait tout à fait penser à mon problème actuel sous autoit!
► Afficher le texte

Merci!

Re: [..]Presse-Papier: impossible d'effacer certains caractères

Posté : jeu. 12 août 2010 23:03
par Tlem
Difficile de dire, puisque nous n'avons pas le texte original avec les caractères à éliminer.

Éventuellement, essayez ceci :

Code : Tout sélectionner

StringReplace($ClipText,@CR,"")
ou
StringReplace($ClipText,@LF,"")

Re: [..]Presse-Papier: impossible d'effacer certains caractères

Posté : sam. 14 août 2010 12:32
par Iste
J'ai comme un doute, pouvez vous nous donner un exemple de code qui opère ces changements svp ?

Re: [..]Presse-Papier: impossible d'effacer certains caractères

Posté : sam. 14 août 2010 13:02
par sylvanie
Bonjour,
je proposerai un triple balayage e regexp :
un sur \x0a pour remplacer les retours chariot par " "
un sur toutes les valeurs de 0x00 à 0x1F pour les éliminer
un dernier sur les autres de 0x7f à FF
► Afficher le texte

Re: [..]Presse-Papier: impossible d'effacer certains caractères

Posté : jeu. 26 août 2010 18:03
par martinbrait
Merci beaucoup Sylvanie :P , c'était effectivement par là qu'il fallait creuser.

Pour ma part , j'ai adapté avec les 4 lignes suivantes:

Code : Tout sélectionner

$ClipText=StringRegExpReplace($ClipText,"[\x0A]",";")
$ClipText=StringRegExpReplace($ClipText,"[\x00-\x1F]","")
$ClipText=StringRegExpReplace($ClipText,"[\x7F-\xFF]","")
$ClipText=StringRegExpReplace($ClipText,"[\x00-\x20]",";")
Désormais, le presse papier se charge parfaitement, sans espaces ou autres non attendus!