Page 1 sur 1

Problèmes de fonctions non reconnues dans mon script

Posté : lun. 13 mai 2019 15:41
par khenpah
Bonjour à tous et à toutes et je vous remercie d'avance de l'aide que vous me fournirez car je suis assez bloqué.

Je me forme au langage Autoit en suivant les exercices d'Openclassroom.
Pour mon dernier script, j'ai défini deux fonctions à la fin de mon code :

- une pour lire le contenu d'une liste et renseigner une valeur dans une variable
- une autre pour vérifier le status d'un bouton radio.

Sauf que le script m'indique toujours qu'il ne reconnait pas les fonctions définies à la fin.
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <StringConstants.au3>
#include <WindowsConstants.au3>
#include <Crypt.au3>

global $chemin = ""
Global $algo= ""

#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Interface 1", 1108, 525, 195, 129)
$Group1 = GUICtrlCreateGroup("Que voulez vous chiffrer ?", 32, 32, 281, 113)
$rtexte = GUICtrlCreateRadio("texte", 56, 56, 225, 33)
$rfichier = GUICtrlCreateRadio("fichier", 56, 96, 241, 41)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Options", 456, 32, 545, 145)
$mdp = GUICtrlCreateInput("", 568, 56, 161, 21)
$Label1 = GUICtrlCreateLabel("mot de passe", 464, 56, 67, 17)
$Label2 = GUICtrlCreateLabel("Alogrithme :", 768, 64, 59, 17)
global $liste = GUICtrlCreateCombo("RC4", 520, 40, 73, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData($liste,"3DES|AES128|AES192|AES256|DES|RC2")
$chiffrer = GUICtrlCreateButton("Chiffrer", 504, 128, 225, 33)
$dechiffrer = GUICtrlCreateButton("déchiffrer", 752, 128, 233, 33)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Chiffrer un texte", 32, 200, 993, 209)
$texte = GUICtrlCreateEdit("", 48, 232, 953, 161)
GUICtrlSetData(-1, "texte")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("chiffrer un fichier", 32, 424, 1033, 81)
$parcourir = GUICtrlCreateButton("parcourir", 104, 464, 193, 33)
$Label3 = GUICtrlCreateLabel("Chemin du fichier", 376, 456, 85, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)


GUISetState(@SW_SHOW)
While 1
   $nMsg = GUIGetMsg()
      Switch $nMsg
      case $GUI_EVENT_CLOSE
         Exit
      case $rfichier
         GUICtrlSetState($Group4,$GUI_ENABLE)
         GUICtrlSetState($parcourir,$GUI_ENABLE)
         GUICtrlSetState($Label3,$GUI_ENABLE)
         GUICtrlSetState($Group3,$GUI_DISABLE)
         GUICtrlSetState($texte,$GUI_DISABLE)
      case $texte
         GUICtrlSetState($Group4,$GUI_DISABLE)
         GUICtrlSetState($parcourir,$GUI_DISABLE)
         GUICtrlSetState($Label3,$GUI_DISABLE)
         GUICtrlSetState($Group3,$GUI_ENABLE)
         GUICtrlSetState($texte,$GUI_ENABLE)
      case  $parcourir
         $sourcefile = FileOpenDialog("tp",@ScriptDir&'\',"tous (*,*)",9)
         GUICtrlSetData($Label3,"chemin du fichier : "& $sourcefile)
      case $chiffrer
         ;si on clique sur chiffrer
         algo()
         if _IsChecked($rfichier) Then ; on crypte le fichier
            if $sourcefile = '' Then
               MsgBox(0,"tp","choisir un fichier")
            ElseIf _Crypt_EncryptFile($sourcefile,$sourcefile&".crypt",GUICtrlRead($mdp),$algo) Then
               MsgBox(0,"tp","votre fichier a été crypté")
            Else
            ;on crypte le texte
            $cryptdata = _Crypt_EncryptData(GUICtrlRead($texte),GUICtrlRead($mdp),$algo)
            GUICtrlSetData($texte,BinaryToString($cryptdata))
            EndIf
         EndIf
      case $dechiffrer
         ;si on clique sur dechiffrer
         algo()
         if    _IsChecked($rfichier) Then
            if $sourcefile = '' Then
               MsgBox(0,"tp", " choisir un fichier")
            ElseIf _Crypt_DecryptFile($sourcefile,StringLeft($sourcefile,StringLen($sourcefile)-6),GUICtrlRead($mdp),$algo) Then
               MsgBox(0,"tp", "votre fichier a été décrypté")
            Else
               MsgBox(0,"tp","votre fichier n'a pas été décrypté")
            EndIf
         Else
            $cryptdata = _Crypt_EncryptData(GUICtrlRead($texte),GUICtrlRead($mdp),$algo)
            GUICtrlSetData($texte,BinaryToString($cryptdata))
         EndIf
   EndSwitch
WEnd
  

Func algo()
   Switch GUICtrlRead($liste)
   Case "3DES"
      $algo = $CALG_3DES
   Case "DES"
      $algo = $CALG_DES
   Case "RC2"
      $algo = $CALG_RC2
   Case "RC4"
      $algo = $CALG_RC4
   EndSwitch
EndFunc

;Func _IsChecked($control) --> Retourne 1 si le controle est checké, sinon 0
; On fait une comparaison de Bits entre la variable $GUI_CHECKED Et notre valeur de controle. Si le Bit correspondant à l'état checké vaut 1, alors notre BitAnd va renvoyé 1.
Func _IsChecked($control)
    Return BitAnd(GUICtrlRead($control),$GUI_CHECKED) = $GUI_CHECKED
EndFunc
C'est surement basique pour la plupart des membres de ce forum mais je suis bloqué sur cette erreur.

Merci de l'aide que vous m'apporterez.

Re: Problèmes de fonctions non reconnues dans mon script

Posté : lun. 13 mai 2019 17:28
par mikell
Pour moi ça a l'air de vouloir marcher pour un fichier si dans le FileOpenDialog on remplace la virgule par un point *.*
Pour du texte ça marche pas, mais c'est normal parce que le "case $chiffrer" ne le prend pas en compte
Il faudrait aussi que la fonction algo() mentionne toutes les valeurs présentes dans la liste, et revoir les positions et dimensions des controles - mais c'est un détail