huldu Posted March 1, 2006 Share Posted March 1, 2006 (edited) For $x = 1 To UBound($as_monstertype) $monster = $as_monstertype[$x] ToolTip("Looking for : " & $monster & " at line " & $a & " Overall progress: " & $x,0,0) For $a = 1 To UBound($as_monstertype) If $monster = $as_monstertype[$a] Then $as_monstertype[$a] = "" ToolTip("Looking for : " & $monster & " at line " & $a & " Overall progress: " & $x,0,0) EndIf ToolTip("Looking for : " & $monster & " at line " & $a & " Overall progress: " & $x,0,0) Next Next This is the problem line "If $monster = $as_monstertype[$a] Then" I get an error running this, : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.: What im trying to do is look if a type of "monster" (in this case) exists more then once in the array, if it was found then it will be removed. In the end you only have 1 type of monster left in the array. Its pretty rough atm i know . I just wonder why i get that error when i got thru the For loop just before i got to $a? Edited March 1, 2006 by huldu "I'm paper, rock is fine, nerf scissors!!!" Link to comment Share on other sites More sharing options...
Sokko Posted March 1, 2006 Share Posted March 1, 2006 (edited) UBound returns the size of the array, the number of the array's last element is one less than that. If $as_monstertype contained 10 elements (0 through 9), UBound would return 10, and the final iteration of the loop would attempt to access $as_monstertype[10] which is a nonexistant location.I assume you're not storing anything important at $as_monstertype[0] since your loop doesn't access it at all. If you are, you'd want to change that part of the code as well. Edited March 1, 2006 by Sokko Link to comment Share on other sites More sharing options...
huldu Posted March 1, 2006 Author Share Posted March 1, 2006 (edited) Oh... i see what you mean! Think im gonna skip this part, its really really slow if the array is pretty big :| Hm maybe would be alot faster if i saved all the "monsters" to a file instead, then checked thru that and removed as duplicates were found. Edited March 1, 2006 by huldu "I'm paper, rock is fine, nerf scissors!!!" Link to comment Share on other sites More sharing options...
seandisanti Posted March 1, 2006 Share Posted March 1, 2006 Oh... i see what you mean!Think im gonna skip this part, its really really slow if the array is pretty big :|Hm maybe would be alot faster if i saved all the "monsters" to a file instead, then checked thru that and removed as duplicates were found.the fastest way is probably to use ArrayToString to turn the monster array into a string, then use StrInStr() to determine if your monster is listed in that string... Link to comment Share on other sites More sharing options...
Stumpii Posted March 2, 2006 Share Posted March 2, 2006 (edited) This should do what you want. I would not write it out to file as it will be quicker in memory. It does not return an array, but creates a new one instead. This would be a nice little UDF that someone else could finish. #Include<Array.au3> Dim $SourceArray[10] Dim $ResultArray $SourceArray[0] = "a" $SourceArray[1] = "b" $SourceArray[2] = "a" $SourceArray[3] = "c" $SourceArray[4] = "a" $SourceArray[5] = "a" $SourceArray[6] = "c" $SourceArray[7] = "a" $SourceArray[8] = "b" $SourceArray[9] = "a" ; Go through each source index For $iSourceIndex = 0 To UBound($SourceArray) - 1 ;See if it exists in the result Array If IsArray($ResultArray) Then If _ArraySearch($ResultArray, $SourceArray[$iSourceIndex]) = -1 Then ; Does not exist, so add it _ArrayAdd ( $ResultArray, $SourceArray[$iSourceIndex]) EndIf Else ;Not an array, so create it $ResultArray = _ArrayCreate($SourceArray[$iSourceIndex]) EndIf Next _ArrayDisplay ( $ResultArray, "Here are all the entries" ) Edited March 2, 2006 by Stumpii Give a man a script; you have helped him for today. Teach a man to script; and you will not have to hear him whine for help.AutoIt4UE - Custom AutoIt toolbar and wordfile for UltraEdit/UEStudio users.AutoIt Graphical Debugger - A graphical debugger for AutoIt.SimMetrics COM Wrapper - Calculate string similarity. Link to comment Share on other sites More sharing options...
huldu Posted March 2, 2006 Author Share Posted March 2, 2006 (edited) Im very impressed! Your search didnt take more then a second, if that. I had 144 entries. My array search (up there) took almost 5 minutes. In the end the array was empty too lol (forgot to add the monsters to an array so they didnt delete themself:) ) Edited March 2, 2006 by huldu "I'm paper, rock is fine, nerf scissors!!!" Link to comment Share on other sites More sharing options...
huldu Posted March 2, 2006 Author Share Posted March 2, 2006 I just read about _ArrayCreate, and it only supports upto 21 elements?. Thats gonna be very bad "I'm paper, rock is fine, nerf scissors!!!" Link to comment Share on other sites More sharing options...
Stumpii Posted March 2, 2006 Share Posted March 2, 2006 I just read about _ArrayCreate, and it only supports upto 21 elements?. Thats gonna be very bad No. It is only used to create the very first entry. After that, the add function keeps adding, so there will be no limit. Give a man a script; you have helped him for today. Teach a man to script; and you will not have to hear him whine for help.AutoIt4UE - Custom AutoIt toolbar and wordfile for UltraEdit/UEStudio users.AutoIt Graphical Debugger - A graphical debugger for AutoIt.SimMetrics COM Wrapper - Calculate string similarity. Link to comment Share on other sites More sharing options...
huldu Posted March 2, 2006 Author Share Posted March 2, 2006 No. It is only used to create the very first entry. After that, the add function keeps adding, so there will be no limit.Cool, got a bit worried for a second "I'm paper, rock is fine, nerf scissors!!!" 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