87450kalle Posted September 12, 2005 Share Posted September 12, 2005 Hi, Having a problem in my prog. that i can´t work around. Get the following error message: Array variable has incorrect number of subscripts or subscript dimension range exceeded. Any suggestions?? //Johan Link to comment Share on other sites More sharing options...
GaryFrost Posted September 12, 2005 Share Posted September 12, 2005 Posting the script/code would help. SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
87450kalle Posted September 12, 2005 Author Share Posted September 12, 2005 Ok, i added the part that doesn´t work. It is pretty messy... The script works fine, but if I perform the task from row 197 to 207, then row 416 - 445 will generate the error message: Array variable has incorrect number of subscripts or subscript dimension range exceededtemp.au3 Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted September 12, 2005 Moderators Share Posted September 12, 2005 This doesn't look right.. $var2 = FileOpenDialog($message, "C:\Windows\system32\drivers\", "All files (*.*)") From help it looks like it may look like this: $var2 = FileOpenDialog($message, "C:\Windows\system32\drivers\", "All (*.*)") Anyway... Cleaned up a your code a bit too... Tidy is a wonderful thing expandcollapse popup#include <file.au3> #include <GuiConstants.au3> Global $msg Global $Button_next Global $Label_select Global $selectmodell Global $Combo Global $Combo2 Global $line Global $startgui Global $selecttype Global $olddriver Global $oldversion Global $oldurl Global $thirdgui Global $fourthgui Global $file Global $newurl Global $newurltemp Global $newfilever Global $var2 Global $newinfotemp Global $newinfo Global $l Call("Start") Func Start() $startgui = GUICreate("RIS - Driver Update Admin", 310, 200, (@DesktopWidth - 400) / 2, (@DesktopHeight - 400) / 2) $Group_1 = GUICtrlCreateGroup("RIS - PC Driver Update Admin ", 30, 20, 250, 60) $Label_start = GUICtrlCreateLabel("This wizard will help you to update the RIS - Drvier Update utility ", 40, 40, 190, 30) $Combo = GUICtrlCreateCombo("", 70, 110, 170, 21, $CBS_DROPDOWNLIST) GUICtrlSetData(-1, "Dell x200") GUICtrlSetData(-1, "Dell x300") GUICtrlSetData(-1, "Dell GX280") GUICtrlSetData(-1, "Dell 530") GUICtrlSetData(-1, "Dell 620") GUICtrlSetData(-1, "Dell m70") GUICtrlSetData(-1, "Dell d600") $Label_select = GUICtrlCreateLabel("1. Select Model", 70, 90, 130, 20) $Button_next = GUICtrlCreateButton("Next", 100, 155, 100, 25) GUISetState() Call("onselectModel") EndFunc ;==>Start Func onselectModel() While 1 $msg = GUIGetMsg() If $msg = $Button_next Then $selectmodell = GUICtrlRead($Combo) Select Case $selectmodell = "" MsgBox(64, "RIS - Driver Update Admin", "Please, make a selection" & @LF & "before you press Next") Case $selectmodell = "Dell GX280" GUIDelete($startgui) Call("onselectType") ExitLoop Case $selectmodell = "Dell 530" GUIDelete($startgui) Call("onselectType") ExitLoop Case $selectmodell = "Dell x200" GUIDelete($startgui) Call("onselectType") ExitLoop EndSelect EndIf WEnd EndFunc ;==>onselectModel Func onselectType() ;Select Driver Type $secondgui = GUICreate("RIS - Driver Update Admin", 310, 200, (@DesktopWidth - 400) / 2, (@DesktopHeight - 400) / 2) $Group_1 = GUICtrlCreateGroup("RIS - PC Driver Update Admin ", 30, 20, 250, 60) $Label_start = GUICtrlCreateLabel("This wizard will help you to update the RIS - Drvier Update utility ", 40, 40, 190, 30) $Label_select2 = GUICtrlCreateLabel("2. Select Driver Type for " & $selectmodell, 70, 90, 190, 20) $Button_next = GUICtrlCreateButton("Next", 165, 155, 75, 25) $Button_back = GUICtrlCreateButton("Back", 75, 155, 75, 25) $Combo2 = GUICtrlCreateCombo("", 70, 110, 170, 21, $CBS_DROPDOWNLIST) GUICtrlSetData(-1, "Audio Driver " & $selectmodell) GUICtrlSetData(-1, "Video Driver " & $selectmodell) GUICtrlSetData(-1, "Chipset Driver " & $selectmodell) GUICtrlSetData(-1, "Nic Driver " & $selectmodell) GUISetState() While 1 $msg = GUIGetMsg() If $msg = $Button_next Then $selecttype = GUICtrlRead($Combo2) Select Case $selecttype = "" MsgBox(64, "RIS - Driver Update Admin", "Please, make a selection" & @LF & "before you press Next") Case $selecttype = "Audio Driver " & $selectmodell ExitLoop Case $selecttype = "Video Driver " & $selectmodell ExitLoop EndSelect Else If $msg = $Button_back Then GUIDelete($secondgui) Call("Start") ExitLoop EndIf EndIf WEnd $file = FileOpen("RIS Driver Update.au3", 0) ; Check if file opened for reading OK If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf $oldurl = "" $oldurltemp = "" $oldversion = "" $oldversiontemp = "" $nextline = "" $nextlinetemp = "" $olddriver = "" $olddrivertemp = "" $i = 1 While 1 $i = $i + 1 $line = FileReadLine($file) If @error = -1 Then ExitLoop If $nextline = 3 Then $oldurltemp = StringTrimLeft($line, 20) $oldurl = StringTrimRight($oldurltemp, 1) MsgBox(0, "", $oldurl) GUIDelete($secondgui) FileClose($file) Call("NewDriverDetails") ExitLoop EndIf If $nextline = 2 Then $oldversiontemp = StringTrimLeft($line, 17) $oldversion = StringTrimRight($oldversiontemp, 1) MsgBox(0, "", $oldversion) $nextline = 3 EndIf If $nextline = 1 Then $olddrivertemp = StringTrimLeft($line, 18) $olddriver = StringTrimRight($olddrivertemp, 1) MsgBox(0, "", $olddriver) $nextline = 2 EndIf $result2 = StringInStr($line, ";" & $selecttype) If $result2 = 1 Then MsgBox(0, "", $i) $nextline = 1 EndIf WEnd EndFunc ;==>onselectType Func NewDriverDetails() $thirdgui = GUICreate("RIS - Driver Update Admin", 310, 300, (@DesktopWidth - 400) / 2, (@DesktopHeight - 400) / 2) GUICtrlCreateGroup("RIS - PC Driver Update Admin ", 30, 20, 250, 60) GUICtrlCreateLabel("This wizard will help you to update the RIS - Drvier Update utility ", 40, 40, 190, 30) GUICtrlCreateLabel("Old " & $selecttype & ":", 35, 90, 390, 15) GUICtrlCreateLabel("File = " & $olddriver, 35, 105, 390, 15) GUICtrlCreateLabel("Ver = " & $oldversion, 35, 120, 390, 15) GUICtrlCreateLabel("New " & $selecttype & ":", 35, 140, 390, 15) GUICtrlCreateLabel("File = ", 35, 155, 390, 15) GUICtrlCreateLabel("Ver = ", 35, 170, 390, 15) GUISetState(@SW_SHOW) $ver = FileGetVersion($olddriver) If $ver = "0.0.0.0" Then MsgBox(64, "RIS - Driver Update Admin", "The old driver file is removed." & @LF & "Press Change new Driver File" & @LF & "to select driver file") ElseIf $ver <= $oldversion Then MsgBox(64, "RIS - Driver Update Admin", "The old driver file verion is unchanged or older." & @LF & "Press Change new Driver File to select driver file") Else GUICtrlCreateLabel("New " & $selecttype & ":", 35, 140, 390, 15) GUICtrlCreateLabel("File = " & $olddriver, 35, 155, 390, 15) GUICtrlCreateLabel("Ver = " & $ver, 35, 170, 390, 15) EndIf $Button_browse = GUICtrlCreateButton("Change new Driver File", 75, 200, 165, 25) $Button_back = GUICtrlCreateButton("Back", 75, 250, 75, 25) $Button_next = GUICtrlCreateButton("Next", 165, 250, 75, 25) $var2 = $olddriver $newfilever = $ver While 1 $msg = GUIGetMsg() If $msg = $Button_browse Then $message = "Select new driver file" $var2 = FileOpenDialog($message, "C:\Windows\system32\drivers\", "All (*.*)") If @error Then ;MsgBox(4096,"","No File(s) chosen") Else $var2 = StringReplace($var2, "|", @CRLF) $newfilever = FileGetVersion($var2) GUICtrlCreateLabel("File = " & $var2, 35, 155, 390, 15) GUICtrlCreateLabel("Ver = " & $newfilever, 35, 170, 390, 15) EndIf Else If $msg = $Button_back Then GUIDelete($thirdgui) Call("onselectType") ExitLoop Else If $msg = $Button_next Then GUIDelete($thirdgui) Call("OnEnterUrl") ExitLoop EndIf EndIf EndIf WEnd While 1 Sleep(1000) WEnd EndFunc ;==>NewDriverDetails Func OnEnterUrl() $fourthgui = GUICreate("RIS - Driver Update Admin", 310, 235, (@DesktopWidth - 400) / 2, (@DesktopHeight - 400) / 2) GUICtrlCreateGroup("RIS - PC Driver Update Admin ", 30, 20, 250, 60) GUICtrlCreateLabel("This wizard will help you to update the RIS - Drvier Update utility ", 40, 40, 190, 30) GUICtrlCreateLabel("Old url for " & $selecttype & " file:", 35, 90, 390, 15) GUICtrlCreateLabel("Url = " & $oldurl, 35, 105, 390, 15) GUICtrlCreateLabel("Enter new url for " & $selecttype & " file:", 35, 125, 390, 15) $newurltemp = GUICtrlCreateInput("", 35, 145, 250, 20) $Button_back = GUICtrlCreateButton("Back", 75, 185, 75, 25) $Button_next = GUICtrlCreateButton("Next", 165, 185, 75, 25) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() If $msg = $Button_back Then GUIDelete($fourthgui) Call("NewDriverDetails") ExitLoop Else If $msg = $Button_next Then If GUICtrlRead($newurltemp) = "" Then MsgBox(64, "RIS - Driver Update Admin", "Please, enter a new url" & @LF & "before you press Next") Else $newurl = GUICtrlRead($newurltemp) GUIDelete($fourthgui) Call("OnEnterInfo") ExitLoop EndIf EndIf EndIf WEnd While 1 Sleep(1000) WEnd EndFunc ;==>OnEnterUrl Func OnEnterInfo() $5gui = GUICreate("RIS - Driver Update Admin", 415, 310, (@DesktopWidth - 500) / 2, (@DesktopHeight - 400) / 2) GUICtrlCreateGroup("RIS - PC Driver Update Admin ", 30, 20, 250, 60) GUICtrlCreateLabel("This wizard will help you to update the RIS - Drvier Update utility ", 40, 40, 190, 30) GUICtrlCreateLabel("Enter new Download Info Message for " & $selecttype, 12, 100, 390, 15) $newinfotemp = GUICtrlCreateInput("", 10, 120, 396, 112, BitOR($ES_WANTRETURN, $ES_MULTILINE)) $Button_back = GUICtrlCreateButton("Back", 115, 260, 75, 25) $Button_next = GUICtrlCreateButton("Next", 205, 260, 75, 25) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() If $msg = $Button_back Then GUIDelete($5gui) Call("OnEnterUrl") ExitLoop Else If $msg = $Button_next Then If GUICtrlRead($newinfotemp) = "" Then MsgBox(64, "RIS - Driver Update Admin", "Please, enter a new Driver Info" & @LF & "before you press Next") Else $newinfo = GUICtrlRead($newinfotemp) GUIDelete($5gui) Call("OnCompile") ExitLoop EndIf EndIf EndIf WEnd While 1 Sleep(1000) WEnd EndFunc ;==>OnEnterInfo Func OnCompile() $6gui = GUICreate("RIS - Driver Update Admin", 415, 400, (@DesktopWidth - 500) / 2, (@DesktopHeight - 400) / 2) GUICtrlCreateGroup("RIS - PC Driver Update Admin ", 30, 20, 250, 60) GUICtrlCreateLabel("This wizard will help you to update the RIS - Drvier Update utility ", 40, 40, 190, 30) GUICtrlCreateLabel("Save Changes for " & $selecttype, 12, 90, 390, 15) ;GuiCtrlCreateLabel("File = " & $var2, 12, 105, 390, 15) ;GuiCtrlCreateLabel("Ver = " & $newfilever, 12, 120, 390, 15) GUICtrlCreateLabel("Url = " & $newurl, 12, 135, 390, 30) GUICtrlCreateLabel("Driver Info:", 12, 165, 390, 15) GUICtrlCreateInput($newinfo, 10, 182, 396, 112, BitOR($ES_READONLY, $ES_MULTILINE)) _FileCreate("temp.pak") $temppak = FileOpen("temp.pak", 1) If $temppak = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf FileWrite($temppak, $newinfo) FileClose($temppak) $l = 0 $temppak = FileOpen("temp.pak", 0) While 1 $l = $l + 1 $line = FileReadLine($temppak) If @error = -1 Then ExitLoop If $l = 1 Then $line1 = $line MsgBox(0, "Line read:", $line1) ElseIf $l = 2 Then $line2 = $line MsgBox(0, "Line read:", $line2) ElseIf $l = 3 Then $line3 = $line MsgBox(0, "Line read:", $line3) ElseIf $l = 4 Then $line4 = $line MsgBox(0, "Line read:", $line4) ElseIf $l = 5 Then $line5 = $line MsgBox(0, "Line read:", $line5) ElseIf $l = 6 Then $line6 = $line MsgBox(0, "Line read:", $line6) ElseIf $l = 7 Then $line7 = $line MsgBox(0, "Line read:", $line7) ElseIf $l = 8 Then $line8 = $line MsgBox(0, "Line read:", $line8) EndIf WEnd FileClose($temppak) $Button_create = GUICtrlCreateButton("Compile EXE", 115, 320, 165, 25) $Button_back = GUICtrlCreateButton("Back", 115, 355, 75, 25) $Button_cancel = GUICtrlCreateButton("Cancel", 205, 355, 75, 25) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() If $msg = $Button_back Then GUIDelete($6gui) Call("OnEnterInfo") ExitLoop Else If $msg = $Button_create Then GUIDelete($6gui) Call("OnCompileFile") ExitLoop Else If $msg = $Button_cancel Then Exit EndIf EndIf EndIf WEnd While 1 Sleep(1000) WEnd EndFunc ;==>OnCompile Func OnCompileFile() ;$au3file = "Copy of RIS Driver Update.au3" $au3file = "admin1.au3" $au3filenew = "tempau3.au3" ; read in the file $list1 = FileRead($au3file, FileGetSize($au3file)) ;If @error = 1 Then ;MsgBox (0, "", "Error reading from " & $au3file) ;Exit 1 ;EndIf ; split into lines $list = StringSplit($list1, @CRLF, 1) ; replace specific line $linenum = 5 $list[$linenum] = "This is the text on the replaced line." ; overwrite the file $handle = FileOpen($au3filenew, 1) If $handle = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit 1 EndIf For $i = 1 To $list[0] FileWriteLine($handle, $list[$i]) Next MsgBox(0, "", "har skrivit till filen") FileClose($handle) EndFunc ;==>OnCompileFile Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. 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