2015-05-04 2 views
0

Так я пытаюсь сделать функцию из многих функций (я считаю, что это называется рекурсией, прочитал сообщение об этом ранее на этом форуме)функция не работает правильно (AutoIt)

Когда я пытаюсь сделать несколько вещей в одну большую функцию, чтобы я мог ее называть позже, она, похоже, не работает, но когда я убираю «func _hello()» и «endfunc» с конца, все, кажется, работает хорошо. Может кто-нибудь, пожалуйста, объясните это мне. Я знаю, что проблема возникает из-за функции «Конверсия», но я не могу понять, почему это происходит. Пожалуйста, помогите, язык, используемый здесь, - это AutoIt

;;;****Program adds spaces ***** 
;;;***** the input variable here is $New***** 
Global $final 
Global $Hexadec 
Func _hello() 

$DataToBeDecrypted = "55fdaf fdafd" 

$2space = $DataToBeDecrypted 
$New = $2space 

$AddingSpace = StringSplit($New, "") 

$Final = "" 

If Conversion($AddingSpace[0]) Then 

For $Spacing = 1 to $AddingSpace[0] Step 2 
    $Final = $Final & $AddingSpace[$Spacing] & $AddingSpace[$Spacing+1] & " " 
Next 

MsgBox(0, "Adding space to the message so it can be converted back to Hex",  $Final) 

Else 
MsgBox(0, "Result", "String does not contain an even number of characters.") 
EndIf 

Func Conversion($Hexadec) 
Return Mod($Hexadec, 2) = 0 
EndFunc 
;;;***The final value is stored in the $final variable**** 


;***** Hexadecimals to ASCII***** 
;;***Input variable is $HexadecimaltoASCII2****** 

$HexadecimalToASCII2 =$final 
$HexadecimalsToASCII = ChrH($HexadecimalToASCII2) 
$Ascii2Hex = Sub($HexadecimalsToASCII) 
$v5ar = Chr($HexadecimalsToASCII);char 

MsgBox(0,"Hex to ASCII",$HexadecimalsToASCII) 

Func ChrH($v8) 

Local $v5="" 
$A1 = StringSplit($v8, " ") 
For $count = 1 To $A1[0] 
    $v5 &= Chr(Dec($A1[$count])) 
Next 
Return $v5 
endFunc 


Func Sub($v8) 

Local $v9="" 
For $count = 1 To StringLen($v8) 
    If StringLen(Hex(Asc(StringMid($v8, $count, 1)),2)) = 1 Then 
     $v9 &= "0" & Hex(Asc(StringMid($v8, $count, 1))) 
    Else 
     $v9 &= Hex(Asc(StringMid($v8, $count, 1)),2) 
    EndIf 
    If $count <> StringLen($v8) Then $v9 &= " " 
Next 
Return $v9 
endFunc 

;*****HEXADECIMAL to ASCII***** 

EndFunc 
+0

Каждый 'Func' нуждается в закрытии' EndFunc'. В вашем коде кажется, что функции ** Conversion **, ** ChrH ** и ** Sub ** находятся в функции ** _ hello **. Это не сработает! Также вам нужно вызвать по крайней мере 1 функцию извне, функции не будут выполняться сами по себе. Посмотрите на этот маленький пример: http://brugbart.com/autoit-functions – mrt

ответ

0

Кажется, вы никогда не называете свою функцию Hello(). Чтобы выполнить функцию, вы должны ее вызвать.

Попробуйте добавить Hello() в начало файла, и оно должно работать.

Смежные вопросы