Topher Posted July 27, 2012 Posted July 27, 2012 This is my first time using _FileWriteFromArray. It looked straight forward but when I ran the script I got C:\Program Files (x86)\AutoIt3\Include\File.au3 (256) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.: If FileWrite($hFile, $a_Array[$x] & @CRLF) = 0 Then If FileWrite($hFile, ^ ERROR And I can't find the problem. Pointers would help. Thanks expandcollapse popup#include <array.au3> #Include <File.au3> $Root = ".\Data\" Global Const $FileNameGalaxy = $Root & "Galaxy.UU" Global Const $GalaxySize = 400 + Rand(200) Global Const $MaxLinks = 40 Global $SectorLinks Dim $SectorLinks[$GalaxySize+1][$MaxLinks+1] ;-------------------------------------------- Local $a $hSplash = SplashTextOn("Galaxy","Creating") For $itr = 1 To $GalaxySize ; determine number of sector links $Links = Rand(10) $SectorLinks[$itr][0] = RandomDesignation() ControlSetText("","", $hSplash, $GalaxySize - $itr) For $a = 1 To $Links $NewLink = Rand($GalaxySize) $FreeLink = FindEmptyLink($itr) If $NewLink <> 0 Then $SectorLinks[$itr][$FreeLink] = $NewLink $FreeLink = FindEmptyLink($NewLink) If $FreeLink <> 0 Then $SectorLinks[$NewLink][$FreeLink] = $itr Next Next SplashOff() _ArrayDisplay($SectorLinks) WriteGalaxy() Func WriteGalaxy() $file = FileOpen($FileNameGalaxy, 2) If $file = -1 Then MsgBox(16, "Fatal Error", "Can not create galaxy file") Exit EndIf _FileWriteFromArray($file, $SectorLinks, 0) FileClose($file) EndFunc Func DesignationExists($Designation) For $a = 1 To $GalaxySize If StringUpper($SectorLinks[$a][0]) = StringUpper($Designation) Then Return $a Next Return 0 EndFunc Func FindEmptyLink($Sector) For $a = 1 To $MaxLinks If $SectorLinks[$Sector][$a] = 0 Then Return $a Next Return 0 EndFunc Func Rand($pMax) Return Random(0, $pMax, 1) EndFunc Func RandomDesignation() While True $temp = Chr(65 + Rand(25)) If $temp = "I" Then ContinueLoop If $temp = "O" Then ContinueLoop $Designation = "P" & Rand(9) & $temp & "-" & Rand(899)+100 If Not DesignationExists($Designation) Then Return $Designation WEnd EndFunc [left][hr] $mood = "whimsy" $mode = "confused" $randomChaos = True Do Something() Until $Tired[/left][left]Reflex (Arcade game)[/left][left]IX (Board game)[/left][left]The Word Game (Word game)[/left][left]Plastic Sliding Squares Puzzle (Puzzle)[/left]
hannes08 Posted July 27, 2012 Posted July 27, 2012 (edited) Hi Topher, I'm not 100% sure but I guess this happens because you're using a multi-dimensional array. Try using a 1-dimensional one. Edited July 27, 2012 by hannes08 Regards,Hannes[spoiler]If you can't convince them, confuse them![/spoiler]
BrewManNH Posted July 27, 2012 Posted July 27, 2012 What version of AutoIt3 are you using, because this was fixed in version 3.3.7.0? Previously, _FileWriteFromArray only worked with 1D arrays, it was changed to work with 2D arrays in that version. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
Topher Posted July 27, 2012 Author Posted July 27, 2012 Dumb question, but how do I find out what version I have? [left][hr] $mood = "whimsy" $mode = "confused" $randomChaos = True Do Something() Until $Tired[/left][left]Reflex (Arcade game)[/left][left]IX (Board game)[/left][left]The Word Game (Word game)[/left][left]Plastic Sliding Squares Puzzle (Puzzle)[/left]
hannes08 Posted July 27, 2012 Posted July 27, 2012 What version of AutoIt3 are you using, because this was fixed in version 3.3.7.0? Previously, _FileWriteFromArray only worked with 1D arrays, it was changed to work with 2D arrays in that version. Hi BrewManNH, really? I'm using 3.3.8.0 and it crashes with this little script: #include <file.au3> Dim $array[3][2] = [[2,2], ['Z1S1', 'Z1S2'], ['Z2S1', 'Z2S2']] _ArrayDisplay($array) _FileWriteFromArray("asdfghjkl.txt", $array) Also I cannot find anything in the helpfile that points to _FileWriteFromArray() being able to use 2-Dim arrays... :S Regards,Hannes[spoiler]If you can't convince them, confuse them![/spoiler]
hannes08 Posted July 27, 2012 Posted July 27, 2012 Dumb question, but how do I find out what version I have? ConsoleWrite(@AutoItVersion & @CRLF) Regards,Hannes[spoiler]If you can't convince them, confuse them![/spoiler]
BrewManNH Posted July 27, 2012 Posted July 27, 2012 Put this script into SciTE and run it and let me know what you see in the console output. #include <Misc.au3> ; Version: 1.00. AutoIt: V3.3.8.1 ; Retrieve the recommended information of the current system when posting a support question. Local $sSystemInfo = 'I have a valid AutoIt support question and kindly provide the details of my system:' & @CRLF & @CRLF & _ 'AutoIt Version: V' & @AutoItVersion & ' [' & _Iif(@AutoItX64, 'X64', 'X32') & ']' & @CRLF & _ 'Windows Version: ' & @OSVersion & ' [' & _GetOSLanguage() & ']' & @CRLF & _ 'Language: ' & @OSLang & @CRLF & @CRLF MsgBox(4096, 'This info has been copied to the clipboard. Use Ctrl + V to retrieve it.', $sSystemInfo) ClipPut($sSystemInfo) ; #FUNCTION# ==================================================================================================================== ; Name ..........: _GetOSLanguage ; Description ...: Retrieves the language of the OS, this supports 19 of the most popular languages. ; Syntax ........: _GetOSLanguage() ; Parameters ....: None ; Return values .: None ; Author ........: guinness ; Link ..........: http://www.autoitscript.com/forum/topic/131832-getoslanguage-retrieve-the-language-of-the-os/ ; Example .......: No ; =============================================================================================================================== Func _GetOSLanguage() Local $aString[20] = [19, "0409 0809 0c09 1009 1409 1809 1c09 2009 2409 2809 2c09 3009 3409", "0404 0804 0c04 1004 0406", "0406", "0413 0813", "0425", _ "040b", "040c 080c 0c0c 100c 140c 180c", "0407 0807 0c07 1007 1407", "040e", "0410 0810", _ "0411", "0414 0814", "0415", "0416 0816", "0418", _ "0419", "081a 0c1a", "040a 080a 0c0a 100a 140a 180a 1c0a 200a 240a 280a 2c0a 300a 340a 380a 3c0a 400a 440a 480a 4c0a 500a", "041d 081d"] Local $aLanguage[20] = [19, "English", "Chinese", "Danish", "Dutch", "Estonian", "Finnish", "French", "German", "Hungarian", "Italian", _ "Japanese", "Norwegian", "Polish", "Portuguese", "Romanian", "Russian", "Serbian", "Spanish", "Swedish"] For $i = 1 To $aString[0] If StringInStr($aString[$i], @OSLang) Then Return $aLanguage[$i] EndIf Next Return $aLanguage[1] EndFunc ;==>_GetOSLanguage If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
BrewManNH Posted July 27, 2012 Posted July 27, 2012 I ran that script in the first post, after changing the file path to the script directory, and it worked for me.Here's a portion of the Galaxy.UU file's contents.|209P5S-175|223P1T-752|62P3H-940|203P1E-807|267P8U-970|318P7L-916|146P0P-600|147P2G-417|243P6E-972|4P1N-866|74P9X-602|404P1U-257|320P6C-810|246P3G-991|9P5A-876|286P9K-328|175P6L-179|390P4P-107|150P2T-677|40P7E-608|31P6P-843|319P4H-975|353P0F-721|179P8Z-900|239P4Z-911|239P8F-443|11P9J-864|41P8J-896|343P1T-936|277P5P-752|308P0A-491|20P4J-273|72P9V-441|296P1B-186|342P6D-852|65 If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
BrewManNH Posted July 27, 2012 Posted July 27, 2012 (edited) Hi BrewManNH, really? I'm using 3.3.8.0 and it crashes with this little script: #include <file.au3> Dim $array[3][2] = [[2,2], ['Z1S1', 'Z1S2'], ['Z2S1', 'Z2S2']] _ArrayDisplay($array) _FileWriteFromArray("asdfghjkl.txt", $array) Also I cannot find anything in the helpfile that points to _FileWriteFromArray() being able to use 2-Dim arrays... :S It's hidden in the bugtracker under ticket #1712 EDIT: BTW, that script will crash because the Array.au3 UDF isnt' included. EDIT2: The help file doesn't directly mention that it works with 2D arrays, but there's a new option for the $s_Delim character and a new error #4. Edited July 27, 2012 by BrewManNH If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
Topher Posted July 27, 2012 Author Posted July 27, 2012 Just installed version 3.3.8.1 and it now works like a charm. Thank you for the quick solution. [left][hr] $mood = "whimsy" $mode = "confused" $randomChaos = True Do Something() Until $Tired[/left][left]Reflex (Arcade game)[/left][left]IX (Board game)[/left][left]The Word Game (Word game)[/left][left]Plastic Sliding Squares Puzzle (Puzzle)[/left]
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