home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 April / PCWorld_2005-04_cd.bin / software / vyzkuste / autoit / autoit-v3-setup.exe / Include / String.au3 < prev    next >
Text File  |  2005-01-17  |  13KB  |  308 lines

  1. #include-once
  2.  
  3. ;===============================================================================
  4. ;
  5. ; Function Name:    _HexToStr("hex")
  6. ; Description:      Convert a hex string of characters to ASCII Characters.
  7. ; Parameter(s):     $strHex is the hex string you want to convert.
  8. ; Requirement(s):   Hex Input.
  9. ; Return Value(s):  On Success - Returns the converted string of characters.
  10. ;                   On Failure - -1  and sets @ERROR = 1
  11. ; Author(s):        Jarvis Stubblefield 
  12. ;
  13. ;===============================================================================
  14.  
  15. Func _HexToString($strHex)
  16.     Local $strChar, $aryHex, $i, $iDec, $Char, $file, $strHex, $iOne, $iTwo
  17.     
  18.     $aryHex = StringSplit($strHex, "")
  19.     
  20.     For $i = 1 To $aryHex[0]
  21.         $iOne = $aryHex[$i]
  22.         $i = $i + 1
  23.         $iTwo = $aryHex[$i]
  24.         $iDec = Dec($iOne & $iTwo)
  25.         $Char = Chr($iDec)
  26.         $strChar = $strChar & $Char
  27.     Next
  28.  
  29.     If $strChar = "" Then
  30.         SetError(1)
  31.         Return -1
  32.     Else
  33.         Return $strChar
  34.     EndIf
  35. EndFunc
  36.  
  37. ;===============================================================================
  38. ;
  39. ; Function Name:    _StringEncryption()
  40. ; Description:      RC4 Based string encryption
  41. ; Parameter(s):     $i_Encrypt - 1 to encrypt, 0 to decrypt
  42. ;                   $s_EncryptText - string to encrypt
  43. ;                   $s_EncryptPassword - string to use as an encryption password
  44. ;                   $i_EncryptLevel - integer to use as number of times to encrypt string
  45. ; Requirement(s):   None
  46. ; Return Value(s):  On Success - Returns the string encrypted (blank) times with (blank) password
  47. ;                   On Failure - Returns a blank string and sets @error = 1
  48. ; Author(s):        Wes Wolfe-Wolvereness <Weswolf@aol.com>
  49. ;
  50. ;===============================================================================
  51. ;
  52. Func _StringEncrypt($i_Encrypt, $s_EncryptText, $s_EncryptPassword, $i_EncryptLevel = 1)
  53.    If $i_Encrypt <> 0 And $i_Encrypt <> 1 Then
  54.       Return ''
  55.       SetError(1)
  56.    ElseIf $s_EncryptText = '' Or $s_EncryptPassword = '' Then
  57.       Return ''
  58.       SetError(1)
  59.    Else
  60.       If Number($i_EncryptLevel) <= 0 Or Int($i_EncryptLevel) <> $i_EncryptLevel Then Local $i_EncryptLevel = 1
  61.       Local $v_EncryptModified
  62.       Local $i_EncryptCountH
  63.       Local $i_EncryptCountG
  64.       Local $v_EncryptSwap
  65.       Local $av_EncryptBox[256][2]
  66.       Local $i_EncryptCountA
  67.       Local $i_EncryptCountB
  68.       Local $i_EncryptCountC
  69.       Local $i_EncryptCountD
  70.       Local $i_EncryptCountE
  71.       Local $i_EncryptCountF
  72.       Local $v_EncryptCipher
  73.       Local $v_EncryptCipherBy
  74.       If $i_Encrypt = 1 Then
  75.          Local $i_EncryptCountC = 0
  76.          For $i_EncryptCountF = 0 To $i_EncryptLevel Step 1
  77.             $i_EncryptCountG = ''
  78.             $i_EncryptCountH = ''
  79.             $v_EncryptModified = ''
  80.             For $i_EncryptCountG = 1 To StringLen($s_EncryptText)
  81.                If $i_EncryptCountH = StringLen($s_EncryptPassword) Then
  82.                   $i_EncryptCountH = 1
  83.                Else
  84.                   $i_EncryptCountH = $i_EncryptCountH + 1
  85.                EndIf
  86.                $v_EncryptModified = $v_EncryptModified & Chr(BitXOR(Asc(StringMid($s_EncryptText, $i_EncryptCountG, 1)), Asc(StringMid($s_EncryptPassword, $i_EncryptCountH, 1)), 255))
  87.             Next
  88.             $s_EncryptText = $v_EncryptModified
  89.             $i_EncryptCountA = ''
  90.             $i_EncryptCountB = 0
  91.             $i_EncryptCountC = ''
  92.             $i_EncryptCountD = ''
  93.             $i_EncryptCountE = ''
  94.             $v_EncryptCipherBy = ''
  95.             $v_EncryptCipher = ''
  96.             $v_EncryptSwap = ''
  97.             $av_EncryptBox = ''
  98.             Local $av_EncryptBox[256][2]
  99.             For $i_EncryptCountA = 0 To 255
  100.                $av_EncryptBox[$i_EncryptCountA][1] = Asc(StringMid($s_EncryptPassword, Mod($i_EncryptCountA, StringLen($s_EncryptPassword)) + 1, 1))
  101.                $av_EncryptBox[$i_EncryptCountA][0] = $i_EncryptCountA
  102.             Next
  103.             For $i_EncryptCountA = 0 To 255
  104.                $i_EncryptCountB = Mod( ($i_EncryptCountB + $av_EncryptBox[$i_EncryptCountA][0] + $av_EncryptBox[$i_EncryptCountA][1]), 256)
  105.                $v_EncryptSwap = $av_EncryptBox[$i_EncryptCountA][0]
  106.                $av_EncryptBox[$i_EncryptCountA][0] = $av_EncryptBox[$i_EncryptCountB][0]
  107.                $av_EncryptBox[$i_EncryptCountB][0] = $v_EncryptSwap
  108.             Next
  109.             For $i_EncryptCountA = 1 To StringLen($s_EncryptText)
  110.                $i_EncryptCountC = Mod( ($i_EncryptCountC + 1), 256)
  111.                $i_EncryptCountD = Mod( ($i_EncryptCountD + $av_EncryptBox[$i_EncryptCountC][0]), 256)
  112.                $i_EncryptCountE = $av_EncryptBox[Mod( ($av_EncryptBox[$i_EncryptCountC][0] + $av_EncryptBox[$i_EncryptCountD][0]), 256) ][0]
  113.                $v_EncryptCipherBy = BitXOR(Asc(StringMid($s_EncryptText, $i_EncryptCountA, 1)), $i_EncryptCountE)
  114.                $v_EncryptCipher = $v_EncryptCipher & Hex($v_EncryptCipherBy, 2)
  115.             Next
  116.             $s_EncryptText = $v_EncryptCipher
  117.          Next
  118.       Else
  119.          For $i_EncryptCountF = 0 To $i_EncryptLevel Step 1
  120.             $i_EncryptCountB = 0
  121.             $i_EncryptCountC = ''
  122.             $i_EncryptCountD = ''
  123.             $i_EncryptCountE = ''
  124.             $v_EncryptCipherBy = ''
  125.             $v_EncryptCipher = ''
  126.             $v_EncryptSwap = ''
  127.             $av_EncryptBox = ''
  128.             Local $av_EncryptBox[256][2]
  129.             For $i_EncryptCountA = 0 To 255
  130.                $av_EncryptBox[$i_EncryptCountA][1] = Asc(StringMid($s_EncryptPassword, Mod($i_EncryptCountA, StringLen($s_EncryptPassword)) + 1, 1))
  131.                $av_EncryptBox[$i_EncryptCountA][0] = $i_EncryptCountA
  132.             Next
  133.             For $i_EncryptCountA = 0 To 255
  134.                $i_EncryptCountB = Mod( ($i_EncryptCountB + $av_EncryptBox[$i_EncryptCountA][0] + $av_EncryptBox[$i_EncryptCountA][1]), 256)
  135.                $v_EncryptSwap = $av_EncryptBox[$i_EncryptCountA][0]
  136.                $av_EncryptBox[$i_EncryptCountA][0] = $av_EncryptBox[$i_EncryptCountB][0]
  137.                $av_EncryptBox[$i_EncryptCountB][0] = $v_EncryptSwap
  138.             Next
  139.             For $i_EncryptCountA = 1 To StringLen($s_EncryptText) Step 2
  140.                $i_EncryptCountC = Mod( ($i_EncryptCountC + 1), 256)
  141.                $i_EncryptCountD = Mod( ($i_EncryptCountD + $av_EncryptBox[$i_EncryptCountC][0]), 256)
  142.                $i_EncryptCountE = $av_EncryptBox[Mod( ($av_EncryptBox[$i_EncryptCountC][0] + $av_EncryptBox[$i_EncryptCountD][0]), 256) ][0]
  143.                $v_EncryptCipherBy = BitXOR(Dec(StringMid($s_EncryptText, $i_EncryptCountA, 2)), $i_EncryptCountE)
  144.                $v_EncryptCipher = $v_EncryptCipher & Chr($v_EncryptCipherBy)
  145.             Next
  146.             $s_EncryptText = $v_EncryptCipher
  147.             $i_EncryptCountG = ''
  148.             $i_EncryptCountH = ''
  149.             $v_EncryptModified = ''
  150.             For $i_EncryptCountG = 1 To StringLen($s_EncryptText)
  151.                If $i_EncryptCountH = StringLen($s_EncryptPassword) Then
  152.                   $i_EncryptCountH = 1
  153.                Else
  154.                   $i_EncryptCountH = $i_EncryptCountH + 1
  155.                EndIf
  156.                $v_EncryptModified = $v_EncryptModified & Chr(BitXOR(Asc(StringMid($s_EncryptText, $i_EncryptCountG, 1)), Asc(StringMid($s_EncryptPassword, $i_EncryptCountH, 1)), 255))
  157.             Next
  158.             $s_EncryptText = $v_EncryptModified
  159.          Next
  160.       EndIf
  161.       Return $s_EncryptText
  162.    EndIf
  163. EndFunc   ;==>_StringEncrypt
  164.  
  165. ;===============================================================================
  166. ;
  167. ; Description:      Changes a string to proper case, same a =Proper function in Excel
  168. ; Syntax:           _StringProper( $sString)
  169. ; Parameter(s):     $sString      - String to change to proper case.
  170. ; Requirement(s):   None
  171. ; Return Value(s):  On Success - Returns the proper string.
  172. ;                   On Failure - Returns an empty string and sets @error = 1
  173. ; Author(s):        Jos van der Zande <jdeb@autoitscript.com>
  174. ; Note(s):          None
  175. ;
  176. ;===============================================================================
  177.  
  178. Func _StringProper($s_Str)
  179.    Local $iX = 0
  180.    Local $CapNext = 1
  181.    Local $s_nStr = ""
  182.    Local $s_CurChar
  183.    For $iX = 1 To StringLen($s_Str)
  184.       $s_CurChar = StringMid($s_Str, $iX, 1)
  185.       Select
  186.          Case $CapNext = 1
  187.             If __CharacterIsApha($s_CurChar) Then
  188.                $s_CurChar = StringUpper($s_CurChar)
  189.                $CapNext = 0
  190.             EndIf
  191.          Case Not __CharacterIsApha($s_CurChar)
  192.             $CapNext = 1
  193.          Case Else
  194.             $s_CurChar = StringLower($s_CurChar)
  195.       EndSelect
  196.       $s_nStr = $s_nStr & $s_CurChar
  197.    Next
  198.    Return ($s_nStr)
  199. EndFunc   ;==>_StringProper
  200.  
  201. ;===============================================================================
  202. ;
  203. ; Description:      Repeats a string a specified number of times.
  204. ; Syntax:           _StringRepeat( $sString, $iRepeatCount )
  205. ; Parameter(s):     $sString      - String to repeat
  206. ;                   $iRepeatCount - Number of times to repeat the string
  207. ; Requirement(s):   None
  208. ; Return Value(s):  On Success - Returns string with specified number of repeats
  209. ;                   On Failure - Returns an empty string and sets @error = 1
  210. ; Author(s):        Jeremy Landes <jlandes@landeserve.com>
  211. ; Note(s):          None
  212. ;
  213. ;===============================================================================
  214. Func _StringRepeat($sString, $iRepeatCount)
  215.    ;==============================================
  216.    ; Local Constant/Variable Declaration Section
  217.    ;==============================================
  218.    Local $sResult
  219.    Local $iCount
  220.    
  221.    Select
  222.       Case Not StringIsInt($iRepeatCount)
  223.          SetError(1)
  224.          Return ""
  225.       Case StringLen($sString) < 1
  226.          SetError(1)
  227.          Return ""
  228.       Case $iRepeatCount <= 0
  229.          SetError(1)
  230.          Return ""
  231.       Case Else
  232.          For $iCount = 1 To $iRepeatCount
  233.             $sResult = $sResult & $sString
  234.          Next
  235.          
  236.          Return $sResult
  237.    EndSelect
  238. EndFunc   ;==>_StringRepeat
  239.  
  240. ;===============================================================================
  241. ;
  242. ; Description:      Reverses the contents of the specified string.
  243. ; Syntax:           _StringReverse( $sString )
  244. ; Parameter(s):     $sString - String to reverse
  245. ; Requirement(s):   None
  246. ; Return Value(s):  On Success - Returns reversed string
  247. ;                   On Failure - Returns an empty string and sets @error = 1
  248. ; Author(s):        Jonathan Bennett <jon at hiddensoft com>
  249. ; Note(s):          None
  250. ;
  251. ;===============================================================================
  252. Func _StringReverse($sString)
  253.    ;==============================================
  254.    ; Local Constant/Variable Declaration Section
  255.    ;==============================================
  256.    Local $sReverse
  257.    Local $iCount
  258.    
  259.    If StringLen($sString) >= 1 Then
  260.       For $iCount = 1 To StringLen($sString)
  261.          $sReverse = StringMid($sString, $iCount, 1) & $sReverse
  262.       Next
  263.       
  264.       Return $sReverse
  265.    Else
  266.       SetError(1)
  267.       Return ""
  268.    EndIf
  269. EndFunc   ;==>_StringReverse
  270.  
  271. ;===============================================================================
  272. ;
  273. ; Function Name:    _StrToHex("string")
  274. ; Description:      Convert a string of characters to hexidecimal.
  275. ; Parameter(s):     $strChar is the string you want to convert.
  276. ; Requirement(s):   String Input.
  277. ; Return Value(s):  On Success - Returns the converted string in hexidecimal.
  278. ;                   On Failure - -1  and sets @ERROR = 1
  279. ; Author(s):        Jarvis Stubblefield 
  280. ;
  281. ;===============================================================================
  282.  
  283. Func _StringToHex($strChar)
  284.     Local $aryChar, $i, $iDec, $hChar, $file, $strHex
  285.     
  286.     $aryChar = StringSplit($strChar, "")
  287.     
  288.     For $i = 1 To $aryChar[0]
  289.         $iDec = Asc($aryChar[$i])
  290.         $hChar = Hex($iDec, 2)
  291.         $strHex = $strHex & $hChar
  292.     Next
  293.     
  294.     If $strHex = "" Then
  295.         SetError(1)
  296.         Return -1
  297.     Else
  298.         Return $strHex
  299.     EndIf
  300. EndFunc
  301.  
  302. ;=================================================================================
  303. ; Helper functions
  304. Func __CharacterIsApha($s_Str)
  305.    Local $a_Alpha = "abcdefghijklmnopqrstuvwxyz"
  306.    Return ( StringInStr($a_Alpha, $s_Str))
  307. EndFunc   ;==>__CharacterIsApha
  308.