Error: Subscript used with non-Array variable

09/16/2012 18:13 piper332#1
Ich bin gerade dabei ein Script zu machen, bei dem ich mehr Überblick über das Lets Play schauen bekomme. Nur jetzt häng ich an einer Fehlermeldung: Subscript used with non-Array variable. Der Fehler soll in Zeile 89 sein..
Ich hab zwar schon gegooglet, aber da hab ich keine konkrete antwort auf mein Problem bekommen..
In der Schleife in Zeile 88 Soll das Script überprüfen, ob ein Wert eingetragen ist und ob der noch aktiv ist, wenn es einen eintrag gibt, welcher noch aktiv ist, dann soll das in die Tabelle eingetragen werden.
Ich würde mich freuen, wenn sich jemand das mal anschauen könnte (und eventuell noch andere Verbesserungsvorschlage machen könnte, ich lerne ja noch ;))
Hier der Code:
Code:
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.6.1
 Author:         myName

 Script Function:
	Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Gui = GUICreate("YT LP Watch", 300, 300, 500, 250)
$NewSerieLabel = GUICtrlCreateLabel("Neue Serie eintragen:", 10, 10, 110, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$NewSerieInput = GUICtrlCreateInput("", 10, 30, 110, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$NewLPerLabel = GUICtrlCreateLabel("LPer der Serie:", 130, 10, 110, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$NewLPerInput = GUICtrlCreateInput("", 130, 30, 110, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$NewSerieButton = GUICtrlCreateButton("Eintragen", 10, 55, 70, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")

$OutSerieLabel = GUICtrlCreateLabel("Serie als beendet eintragen (ID):", 10, 80, 170, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$OutSerieInput = GUICtrlCreateInput("", 10, 100, 110, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$OutSerieButton = GUICtrlCreateButton("Abschließen", 10, 125, 70, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")

$DeleteSerieLabel = GUICtrlCreateLabel("Alte Serie austragen (ID):", 10, 150, 140, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$DeleteSerieInput = GUICtrlCreateInput("", 10, 170, 110, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$DeleteSerieButton = GUICtrlCreateButton("Austragen", 10, 195, 70, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")

$Weiter = GUICtrlCreateButton("Zu den Serien ->", 10, 260, 100, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")

IniWrite(@scriptdir & "/IDs.ini","ID","0","")

GUISetState()

While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = -3
			Exit
		Case $msg = $NewSerieButton
			$New = GUICtrlRead($NewSerieInput)
			$NewLPer = GUICtrlRead($NewLPerInput)
				While 1
					$FreeId = Random(1,800,1)
					$EmptyCheck = IniRead(@scriptdir & "/IDs.ini","ID",$FreeId,"")
					If $EmptyCheck == "" Then ExitLoop
				Wend
				IniWrite(@scriptdir & "/IDs.ini","ID",$FreeId,$New)
				IniWrite(@scriptdir & "/IDs.ini","Active",$FreeId,"y")
				IniWrite(@scriptdir & "/IDs.ini","Lper",$FreeId,$NewLper)
				IniWrite(@scriptdir & "/IDs.ini","Folge Momentan",$FreeId,"0")
				IniWrite(@scriptdir & "/IDs.ini","Folge Angesehen",$FreeId,"0")
			Case $msg = $OutSerieButton
				$Out = GUICtrlRead($OutSerieInput)
				IniWrite(@scriptdir & "/IDs.ini","Active",$Out,"n")
			Case $msg = $DeleteSerieButton
				$Del = GUICtrlRead($DeleteSerieInput)
				IniDelete(@scriptdir & "/IDs.ini","Active",$Del)
				IniDelete(@scriptdir & "/IDs.ini","Lper",$Del)
				IniDelete(@scriptdir & "/IDs.ini","ID",$Del)
				IniDelete(@scriptdir & "/IDs.ini","Folge Momentan",$Del)
				IniDelete(@scriptdir & "/IDs.ini","Folge Angesehen",$Del)
			Case $msg = $Weiter
				ExitLoop
	EndSelect
WEnd


GUIDelete($Gui)
$Gui = GUICreate("YT LP Watch", 300, 300, 500, 250, -1, $WS_EX_ACCEPTFILES)
Dim $Item
$liste = GUICtrlCreateListView(" ID |   Serie   | Lets Player ", 10, 10, 280, 230)
$ID = 1
#cs
Zeile 88: 
#ce
While 1
	$Item[$ID] = IniRead(@scriptdir & "/IDs.ini","ID",$ID,"")
	$Item[$ID] = IniRead(@scriptdir & "/IDs.ini","Active",$ID,"n")
	$ID +=1
	Wend
	GUISetState()
While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = -3
			Exit
	EndSelect	
WEnd
09/16/2012 20:35 Achat#2
Code:
(92) : ==> Subscript used with non-Array variable.:
$Item[$ID] = IniRead(@scriptdir & "/IDs.ini","ID",$ID,"")
$Item^ ERROR
Irgendwie verstehe ich dein Skript nicht.
Der Fehler scheint bei dem Array zu liegen.

Code:
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.6.1
 Author:         myName

 Script Function:
	Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Gui = GUICreate("YT LP Watch", 300, 300, 500, 250)
$NewSerieLabel = GUICtrlCreateLabel("Neue Serie eintragen:", 10, 10, 110, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$NewSerieInput = GUICtrlCreateInput("", 10, 30, 110, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$NewLPerLabel = GUICtrlCreateLabel("LPer der Serie:", 130, 10, 110, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$NewLPerInput = GUICtrlCreateInput("", 130, 30, 110, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$NewSerieButton = GUICtrlCreateButton("Eintragen", 10, 55, 70, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")

$OutSerieLabel = GUICtrlCreateLabel("Serie als beendet eintragen (ID):", 10, 80, 170, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$OutSerieInput = GUICtrlCreateInput("", 10, 100, 110, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$OutSerieButton = GUICtrlCreateButton("Abschließen", 10, 125, 70, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")

$DeleteSerieLabel = GUICtrlCreateLabel("Alte Serie austragen (ID):", 10, 150, 140, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$DeleteSerieInput = GUICtrlCreateInput("", 10, 170, 110, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")
$DeleteSerieButton = GUICtrlCreateButton("Austragen", 10, 195, 70, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")

$Weiter = GUICtrlCreateButton("Zu den Serien ->", 10, 260, 100, 20)
guictrlsetfont(-1,8,800,0,"Comic Sans MS")

IniWrite(@scriptdir & "/IDs.ini","ID","0","")

GUISetState()

While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = -3
			Exit
		Case $msg = $NewSerieButton
			$New = GUICtrlRead($NewSerieInput)
			$NewLPer = GUICtrlRead($NewLPerInput)
				While 1
					$FreeId = Random(1,800,1)
					$EmptyCheck = IniRead(@scriptdir & "/IDs.ini","ID",$FreeId,"")
					If $EmptyCheck == "" Then ExitLoop
				Wend
				IniWrite(@scriptdir & "/IDs.ini","ID",$FreeId,$New)
				IniWrite(@scriptdir & "/IDs.ini","Active",$FreeId,"y")
				IniWrite(@scriptdir & "/IDs.ini","Lper",$FreeId,$NewLper)
				IniWrite(@scriptdir & "/IDs.ini","Folge Momentan",$FreeId,"0")
				IniWrite(@scriptdir & "/IDs.ini","Folge Angesehen",$FreeId,"0")
			Case $msg = $OutSerieButton
				$Out = GUICtrlRead($OutSerieInput)
				IniWrite(@scriptdir & "/IDs.ini","Active",$Out,"n")
			Case $msg = $DeleteSerieButton
				$Del = GUICtrlRead($DeleteSerieInput)
				IniDelete(@scriptdir & "/IDs.ini","Active",$Del)
				IniDelete(@scriptdir & "/IDs.ini","Lper",$Del)
				IniDelete(@scriptdir & "/IDs.ini","ID",$Del)
				IniDelete(@scriptdir & "/IDs.ini","Folge Momentan",$Del)
				IniDelete(@scriptdir & "/IDs.ini","Folge Angesehen",$Del)
			Case $msg = $Weiter
				ExitLoop
	EndSelect
WEnd


GUIDelete($Gui)
$Gui = GUICreate("YT LP Watch", 300, 300, 500, 250, -1, $WS_EX_ACCEPTFILES)
Dim $Item ;<---- Array ohne Elemente definiert?? WTF?
;Dim [Const] $array[subscript 1]...[subscript n] [ = initializer ]
$liste = GUICtrlCreateListView(" ID |   Serie   | Lets Player ", 10, 10, 280, 230)
$ID = 1
#cs
Zeile 88:
#ce
For $i = 0 To UBound($Item)-1 ;Bei Arrays benutzt man normalerweise FOR - Schleifen ;)
	$Item[$ID] = IniRead(@scriptdir & "/IDs.ini","ID",$ID,"")
	$Item[$ID] = IniRead(@scriptdir & "/IDs.ini","Active",$ID,"n")
Next
	GUISetState()
While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = -3
			Exit
	EndSelect
WEnd
MfG

€dit:
PS: [Only registered and activated users can see links. Click Here To Register...]