Page 1 sur 1
[R] Gestion des caractères Autoit
Posté : mar. 11 août 2015 12:47
par TiDi
Bonjour à tous,
J'ai créé un petit algorithme de chiffrement avec clé, il fonctionne bien, de ce côté là, il n'y a pas de problèmes. Quand j'ai créé une interface permettant de l'utiliser, je me suis rendu compte qu'un retour à la ligne comptait comme un caractère. Je n'ai donc pas compris, Autoit considère que "A" = "a" mais il prend en compte les caractères ASCII de type NULL, CR, LF, etc ... ?
Dans mon algorithme de chiffrement, je répertorie tous les caractères sauf ceux de mise en page (CRLF, ...). J'aimerais que lorsque l'utilisateur envoie le formulaire, les caractères de mise en page ne soient pas pris en compte, comment faire ?
Re: [..] Gestion des caractères Autoit
Posté : mar. 11 août 2015 12:59
par blacksoul305
Bonjour,
utiliser StringSplit est un bon moyen de récupérer seulement les caractères par simples tours de boucles en vérifiant que le caractères que tu souhaites récupérer n'est pas un retour à la ligne. Il suffit de l'appeler sans délimiteur.
Re: [..] Gestion des caractères Autoit
Posté : mar. 11 août 2015 13:44
par TommyDDR
TiDi a écrit :Autoit considère que "A" = "a"
= Tests if two values are equal. e.g. If $var = 5 Then (true if $vVar equals 5). Case insensitive when used with strings.
== Tests if two strings are equal. Case sensitive. The left and right values are converted to strings if they are not strings already. This operator should only be used if string comparisons need to be case sensitive.
Si vous faites if("A" = "a"), ça sera vrai, si vous faites if("A" == "a") ça sera faux.
Re: [..] Gestion des caractères Autoit
Posté : mar. 11 août 2015 14:14
par TiDi
@blacksoul65 : Oui d'accord, mais comment faire pour définir les caractères de mise en page ? Par exemple :
Code : Tout sélectionner
Local $aContenu = StringSplit($sContenu, "")
For $i = 0 To $aContenu[0]
If $aContenu[$i] == "CR" Or $aContenu[$i] == "LF" Or $aContenu[$i] == "NUL" Then ; etc ...
_ArrayDelete($aContenu, $i)
EndIf
Next
Les caractères de mise en page se définisse avec le binaire, l'hexadecimal, mais comment faire pour qu'Autoit puisse les lire ?
@TommyDDR : Merci, je savais pas
Re: [..] Gestion des caractères Autoit
Posté : mar. 11 août 2015 14:24
par blacksoul305
Code : Tout sélectionner
Asc(@CR) renvoie 13
Asc(@CRLF) renvoie 13
Asc(@LF) renvoie 10
Donc ta condition est la suivante
Code : Tout sélectionner
If ( (Asc($sTemp[$i]) == 13) Or (Asc($sTemp[$i]) == 10) )Then...
Re: [..] Gestion des caractères Autoit
Posté : mar. 11 août 2015 15:09
par mikell
Et pourquoi pas un regex ? c'est souple et efficace, et ça permet de prendre en compte les éventuels Vertical tab, Form Feed etc
Code : Tout sélectionner
#Include <Array.au3>
$sContenu = "ab" & @cr & "cd" & @crlf & "ef" & @lf & "gh"
Local $aContenu = StringRegExp($sContenu, '\V', 3)
_ArrayDisplay($aContenu)
Re: [..] Gestion des caractères Autoit
Posté : mar. 11 août 2015 15:57
par TiDi
Merci de votre aide, les deux solutions marchent mais je vais opter pour StringRegExp, plus complète

Re: [..] Gestion des caractères Autoit
Posté : mar. 11 août 2015 16:00
par blacksoul305
Évidemment, puissance et fiabilité des RegEx de mikell est inégalable ! Haha !
N'oublie pas de passer le sujet en résolu.