Jason_A Posted February 26, 2006 Share Posted February 26, 2006 I've looked on the board for this but the only other person I saw who had the same problem gave up on trying to get it to work.Here is a snippet of the code:Dim $charDec[25] While 1 For $i = 1 to 1000 $line = FileReadLine($incoming,$i) If @Error > 0 Then ExitLoop Else If StringLeft($line,4) = "^PSE" Then $empID = StringMid($line,8,3) $passEnc = StringRight($line,(StringLen($line) - 23)) For $j = 1 to (StringLen($passEnc)/4) $k = ($j * 4) - 3 $charEnc = StringMid($passEnc,$k,4) $charDec[$j] = Decrypt($charEnc) Next $passDec = _ArrayToString($charDec,"") FileWriteLine($outgoing,"Employee ID = " & $empID & " - Password = " & $passDec) EndIf EndIf Next ExitLoop WEndThe error is in the line "$charDec[$j] = Decrypt($charEnc)." There is a custom function that seems to be working properly. Any time I try to get a value into $charDec[$j], it gives me the error: "Expected a "=" operator in assignment statement." The variable is correctly Dimmed as an array with more elements than I could possibly need. The custom function is returning a single character. I've also tried putting it into the [(j-1)]th element but got the same thing. Any ideas? Thanks. Link to comment Share on other sites More sharing options...
greenmachine Posted February 26, 2006 Share Posted February 26, 2006 (edited) Do you have the code for the Decrypt function? Just curious (unrelated question), why is there a while loop if you just exitloop after the for loop is done? Edited February 26, 2006 by greenmachine Link to comment Share on other sites More sharing options...
Valuater Posted February 26, 2006 Share Posted February 26, 2006 small stuff ; Read in lines of text until the EOF is reached While 1 $line = FileReadLine($file) If @error = -1 Then ExitLoop MsgBox(0, "Line read:", $line) Wend if @error > 0 ???? 8) Link to comment Share on other sites More sharing options...
Jason_A Posted February 26, 2006 Author Share Posted February 26, 2006 Fifth line should read If @Error <> 0 Then (No change to existing question.) Link to comment Share on other sites More sharing options...
Jason_A Posted February 26, 2006 Author Share Posted February 26, 2006 Do you have the code for the Decrypt function?Not sure if it's going to help you much, but here you go... Func Decrypt($charEnc) $work = Number($charEnc) Select Case $work < 2038 $charDec = Chr($work - 1983) Case $work < 2048 $charDec = Chr($work - 1985) Case $work < 2058 $charDec = Chr($work - 1987) Case $work < 2068 $charDec = Chr($work - 1989) Case $work < 2078 $charDec = Chr($work - 1991) Case $work < 2108 $charDec = Chr($work - 2013) Case $work < 2118 $charDec = Chr($work - 2015) Case $work < 2128 $charDec = Chr($work - 2017) Case $work < 2138 $charDec = Chr($work - 2019) Case $work < 2148 $charDec = Chr($work - 2021) Case Else $charDec = Chr(42) EndSelect Return($charDec) EndFunc Just curious (unrelated question), why is there a while loop if you just exitloop after the for loop is done?Maybe unnecessary, just something I've picked up from somewhere. It gives me an easy way to exit from the loop if the process reaches the end of the file or encouters some other error. Link to comment Share on other sites More sharing options...
Jason_A Posted February 26, 2006 Author Share Posted February 26, 2006 (edited) You know, I think I just figured it out because I'm a doofus and I don't understand how functions work and are called. Nope, I'm still clueless... Edited February 26, 2006 by Jason_A Link to comment Share on other sites More sharing options...
greenmachine Posted February 26, 2006 Share Posted February 26, 2006 I'm trying to test it here, but since I don't have enough info, it's being tough. Can you supply the line of text that fits the description ("^PSE")? Link to comment Share on other sites More sharing options...
Valuater Posted February 26, 2006 Share Posted February 26, 2006 just a thought if $work is equal to 2148... then All of the "Case" statements are utilized...no??? 8) Link to comment Share on other sites More sharing options...
greenmachine Posted February 26, 2006 Share Posted February 26, 2006 AutoIt only runs one case and then breaks (exits the select). expandcollapse popupMsgBox (0, "", Decrypt (2000)) Func Decrypt($charEnc) $work = Number($charEnc) Select Case $work < 2038 $charDec = Chr($work - 1983) MsgBox (0, "", " < 2038") Case $work < 2048 $charDec = Chr($work - 1985) MsgBox (0, "", " < 2048") Case $work < 2058 $charDec = Chr($work - 1987) MsgBox (0, "", " < 2058") Case $work < 2068 $charDec = Chr($work - 1989) MsgBox (0, "", " < 2068") Case $work < 2078 $charDec = Chr($work - 1991) MsgBox (0, "", " < 2078") Case $work < 2108 $charDec = Chr($work - 2013) MsgBox (0, "", " < 2108") Case $work < 2118 $charDec = Chr($work - 2015) MsgBox (0, "", " < 2118") Case $work < 2128 $charDec = Chr($work - 2017) MsgBox (0, "", " < 2128") Case $work < 2138 $charDec = Chr($work - 2019) MsgBox (0, "", " < 2138") Case $work < 2148 $charDec = Chr($work - 2021) MsgBox (0, "", " < 2148") Case Else $charDec = Chr(42) EndSelect Return($charDec) EndFunc Link to comment Share on other sites More sharing options...
Jason_A Posted February 26, 2006 Author Share Posted February 26, 2006 I'm trying to test it here, but since I don't have enough info, it's being tough. Can you supply the line of text that fits the description ("^PSE")?try this as a sample file... ^PSEMP(100,"PASSWORD")=205221362135213020622135 ^PSEMP(104,"PASSWORD")=2063211221342130212721102052 ^PSEMP(105,"PASSWORD")=212021332116211621272126211221142121212221272116 ^PSEMP(106,"PASSWORD")=2032213421352071211221342134 ^PSEMP(107,"PASSWORD")=2053213021332127206221272032204220402034 Link to comment Share on other sites More sharing options...
nfwu Posted February 26, 2006 Share Posted February 26, 2006 (edited) while 1 $line = FileReadLine($incoming,$i) If @Error == -1 Then ExitLoop ElseIf StringLeft($line,4) = "^PSE" Then $empID = StringMid($line,8,3) $passEnc = StringRight($line,(StringLen($line) - 23)) $charDec = "";;Clear the string $charDec For $j = 1 to StringLen($passEnc) Step 4 $charEnc = StringMid( $passEnc, $j, 4) $charDec &= Decrypt($charEnc);;Append result from Decrypt to $charDec Next $passDec = $charDec FileWriteLine($outgoing, "Employee ID = " & $empID & " - Password = " & $passDec) EndIf WEnd Try this #) EDIT: Requres Beta for the &= operator (i think) Edited February 26, 2006 by nfwu TwitterOut of date stuff:Scripts: Sudoku Solver | Webserver | 3D library (Pure AutoIt) | Wood's GadgetsUDFs: _WoodUniqueID() | _DialogEditIni() | _Console*() | _GetIPConfigData() | _URLEncode/Decode() Link to comment Share on other sites More sharing options...
greenmachine Posted February 26, 2006 Share Posted February 26, 2006 (edited) Ok, I was beat to it, but I just wanted to point out that it worked. expandcollapse popupGlobal $NewCharDec[250], $line[7] $line[1] = '^PSEMP(100,"PASSWORD")=205221362135213020622135' $line[2] = '^PSEMP(104,"PASSWORD")=2063211221342130212721102052' $line[3] = '^PSEMP(105,"PASSWORD")=212021332116211621272126211221142121212221272116' $line[4] = '^PSEMP(106,"PASSWORD")=2032213421352071211221342134' $line[5] = '^PSEMP(107,"PASSWORD")=2053213021332127206221272032204220402034' For $zzzz = 1 To 5 If StringLeft($line[$zzzz],4) = "^PSE" Then $empID = StringMid($line[$zzzz],8,3) $passEnc = StringRight($line[$zzzz],(StringLen($line[$zzzz]) - 23)) For $j = 1 to (StringLen($passEnc)/4) $k = ($j * 4) - 3 $charEnc = StringMid($passEnc,$k,4) $NewCharDec[$j] = Decrypt($charEnc) $NewCharDec[0] += 1 Next $passDec = "" For $i = 1 To $NewCharDec[0] $passDec &= $NewCharDec[$i] Next MsgBox (0, "", "Employee ID = " & $empID & @CRLF & "Password = " & $passDec) EndIf Next Func Decrypt($charEnc) $work = Number($charEnc) Select Case $work < 2038 $charDec = Chr($work - 1983) Case $work < 2048 $charDec = Chr($work - 1985) Case $work < 2058 $charDec = Chr($work - 1987) Case $work < 2068 $charDec = Chr($work - 1989) Case $work < 2078 $charDec = Chr($work - 1991) Case $work < 2108 $charDec = Chr($work - 2013) Case $work < 2118 $charDec = Chr($work - 2015) Case $work < 2128 $charDec = Chr($work - 2017) Case $work < 2138 $charDec = Chr($work - 2019) Case $work < 2148 $charDec = Chr($work - 2021) Case Else $charDec = Chr(42) EndSelect Return $charDec EndFunc Result: Employee ID = 100 Password = AutoIt Employee ID = 104 Password = Jason_A Employee ID = 105 Password = greenmachine Employee ID = 106 Password = 1stPasschine Employee ID = 107 Password = BornIn1973ne Edit - I remember what I was going to say a few minutes ago. I was having a big issue with the fact that the name of the array and the variable in the function were the same. I changed the name of the array to compensate, and it worked. Edited February 26, 2006 by greenmachine Link to comment Share on other sites More sharing options...
Jason_A Posted February 26, 2006 Author Share Posted February 26, 2006 I get the same error with nwfu's script even with the beta. gm, you got all the passwords right except that the last two should have been 1stPass and BornIn1973... so I'll probably need to Dim the array between lines. So, maybe the problem really is that I don't know what I'm doing with functions. But this is how I'll learn. Link to comment Share on other sites More sharing options...
greenmachine Posted February 26, 2006 Share Posted February 26, 2006 (edited) Yeah I was wondering about the last two lines.. since "greenmachine" is longer than the other two, it leaked over. I think I know what to fix though. I'll update in a minute. Edit - yep, thought so. Ok, all you have to do is change this little bit. MsgBox (0, "", "Employee ID = " & $empID & @CRLF & "Password = " & $passDec) EndIf $NewCharDec[0] = 0 Next Just put that back and it'll work fine. Edited February 26, 2006 by greenmachine Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now