2015-05-04 42 views
0

,所以我想做一个功能出来的许多功能(我相信它被称为递归,看了一个关于它的帖子早在这个论坛)功能不正常运行(AutoIt的)

当我尝试把一些东西变成1个大函数,所以我可以稍后调用它似乎没有工作,但是当我从最后拿走“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(),它应该可以工作。