Script Verbesserung / Fehler Hilfe

  • Hi,
    Ich habe hier ein kleines Script das aus ein paar Strings Optionen rausfiltert und diese Als Array ausgiebt leider kommen noch ein Paar fehler auf die ich keine Lösung weis und das Script ist an sich ein wenig altertümlich geschrieben ich hoffe ihr könnt mir ein paar verbesserungen vorschlagen :

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <Inet.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Suche("all","13","2","MacOSX","Admin")

    [/autoit] [autoit][/autoit] [autoit]

    Func Suche($sGame,$sPreis,$sAnzahl,$sPlat,$sUser)
    $String = _INetGetSource("http://accoutnspace.ac.funpic.de/Games.txt")

    [/autoit] [autoit][/autoit] [autoit]

    $All = StringSplit($String,"|")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $E1[$All[0]]
    Local $E2[$All[0]]
    Local $E3[$All[0]]
    Local $E4[$All[0]]
    Local $E5[$All[0]]

    [/autoit] [autoit][/autoit] [autoit]

    Local $EE1[$All[0]]
    Local $EE2[$All[0]]
    Local $EE3[$All[0]]
    Local $EE4[$All[0]]
    Local $EE5[$All[0]]

    [/autoit] [autoit][/autoit] [autoit]

    Local $Ergebnis[$All[0]]

    [/autoit] [autoit][/autoit] [autoit]

    For $i=1 to $All[0]
    $Split = StringSplit($All[$i],",")
    _ArrayAdd($E1,$Split[1])
    _ArrayAdd($E2,$Split[2])
    _ArrayAdd($E3,$Split[3])
    _ArrayAdd($E4,$Split[4])
    _ArrayAdd($E5,$Split[5])
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDeleteEmpty($E1)
    _ArrayDeleteEmpty($E2)
    _ArrayDeleteEmpty($E3)
    _ArrayDeleteEmpty($E4)
    _ArrayDeleteEmpty($E5)

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($E1)

    [/autoit] [autoit][/autoit] [autoit]

    For $i=0 to $All[0]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If StringInStr($E1[$i],$sGame) > 0 Then
    _ArrayAdd($EE1,$E1[$i])
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $Preis = StringSplit($E2[$i],"-")

    [/autoit] [autoit][/autoit] [autoit]

    If $sPreis <= $Preis[2] And $sPreis >= $Preis[1] Then
    _ArrayAdd($EE2,$E2[$i])
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    IF $E3[$i] = $sAnzahl Then
    _ArrayAdd($EE3,$E3[$i])
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $E4[$i] = $sPlat Then
    _ArrayAdd($EE4,$E4[$i])
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $E5[$i] = $sUser Then
    _ArrayAdd($EE5,$E5[$i])
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDeleteEmpty($EE1)
    _ArrayDeleteEmpty($EE2)
    _ArrayDeleteEmpty($EE3)
    _ArrayDeleteEmpty($EE4)
    _ArrayDeleteEmpty($EE5)

    [/autoit] [autoit][/autoit] [autoit]

    For $i=0 to $All[0]
    _ArrayAdd($Ergebnis,$EE1[$i]&"|"&$EE2[$i]&"|"&$EE3[$i]&"|"&$EE4[$i]&"|"&$EE5[$i])
    Next
    _ArrayDisplay($Ergebnis)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _ArrayDeleteEmpty(ByRef $ARRAY)
    If Not IsArray($ARRAY) Then Return 0
    Local $arTMP[1]
    For $i = 0 To UBound($ARRAY) -1
    If $ARRAY[$i] <> '' Then
    If $arTMP[0] = '' Then
    $arTMP[0] = $ARRAY[$i]
    Else
    ReDim $arTMP[UBound($arTMP)+1]
    $arTMP[UBound($arTMP)-1] = $ARRAY[$i]
    EndIf
    EndIf
    Next
    $ARRAY = $arTMP
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Also ganz ehrlich ich würde mich an deiner Stelle mal mit 2D Arrays auseinandersetzen, denn bei 12 seperaten Arrays die zudem noch so benannt sind blickt doch keiner mehr durch.

    [autoit]


    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $aAll[1][5] ; 1 Reihe, 5 Spalten

    [/autoit][autoit][/autoit][autoit]

    $sSource = "Hallo,10-15,2,MacOSX,Admin|Balli,10-15,2,MacOSX,Admin|Halli,25-20,1,WindowsXP,Mod|Bolli,50-60,6,WindowsXP,User"
    $aRows = StringSplit($sSource,"|")
    ;_ArrayDisplay($aRows)
    For $i=1 to $aRows[0]
    $temp = StringSplit($aRows[$i],",")
    ;_ArrayDisplay($temp)
    For $j = 1 to $temp[0]
    ReDim $aAll[UBound($aAll)+1][5]
    $aAll[$i-1][$j-1]=$temp[$j]
    Next
    Next
    _ArrayDisplay($aAll)

    [/autoit][autoit][/autoit][autoit]

    ; Suchen kannst du nun zum Beispiel mit der Funktion _arraysearch() oder arrayfindall()

    [/autoit]

    Einmal editiert, zuletzt von misterspeed (29. Juni 2011 um 18:34)

  • So hab nochmal ein wenig verbessert leider kommt jetzt noch ein Feheler auf den ich keine Antwort weis :

    [autoit]

    #include <Array.au3>
    #include <Inet.au3>

    [/autoit][autoit][/autoit][autoit]

    Suche("allo","10-15","2","MacOSX","Admin")

    [/autoit][autoit][/autoit][autoit]

    Func Suche($sGame,$sPreis,$sAnzahl,$sPlet,$sUser)

    [/autoit][autoit][/autoit][autoit]

    Global $aAll[1][5] ; 1 Reihe, 5 Spalten

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $sSource = _INetGetSource("http://accoutnspace.ac.funpic.de/Games.txt")
    $aRows = StringSplit($sSource,"|")
    ;_ArrayDisplay($aRows)
    For $i=1 to $aRows[0]
    $temp = StringSplit($aRows[$i],",")
    ;_ArrayDisplay($temp)
    For $j = 1 to $temp[0]
    ReDim $aAll[UBound($aAll)+1][5]
    $aAll[$i-1][$j-1]=$temp[$j]
    Next
    Next
    ReDim $aAll[(UBound($aAll) / 4)-1][5]

    [/autoit][autoit][/autoit][autoit]

    Local $aE[UBound($aAll)]

    [/autoit][autoit][/autoit][autoit]

    For $i=1 to Ubound($aAll)
    If StringInStr($sGame,$aAll[$i][1]) > 0 And $aAll[$i][2] = $sPreis And $aAll[$i][3] = $sAnzahl And $aAll[$i][4] = $sPlet And $aAll[$i][5] = $sUser Then
    $aE[$i] = $aAll[$i][1]&"|"&$aAll[$i][2]&"|"&$aAll[$i][3]&"|"&$aAll[$i][4]&"|"&$aAll[$i][5]
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay($aE)
    EndFunc

    [/autoit]

    Der Fehler ist :

    Code
    Z:\Users\xcode\Desktop\Project\au3\Test.au3 (27) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    If StringInStr($sGame,$aAll[$i][1]) > 0 And $aAll[$i][2] = $sPreis And $aAll[$i][3] = $sAnzahl And $aAll[$i][4] = $sPlet And $aAll[$i][5] = $sUser Then
    If StringInStr($sGame,^ ERROR
  • Versuch das mal: :)

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <Inet.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Suche("allo","10-15","2","MacOSX","Admin")

    [/autoit] [autoit][/autoit] [autoit]

    Func Suche($sGame,$sPreis,$sAnzahl,$sPlet,$sUser)

    [/autoit] [autoit][/autoit] [autoit]

    Global $aAll[1][5] ; 1 Reihe, 5 Spalten

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $sSource = _INetGetSource("http://accoutnspace.ac.funpic.de/Games.txt")
    $aRows = StringSplit($sSource,"|")
    ;_ArrayDisplay($aRows)
    For $i=1 to $aRows[0]
    $temp = StringSplit($aRows[$i],",")
    ;_ArrayDisplay($temp)
    For $j = 1 to $temp[0]
    ReDim $aAll[UBound($aAll)+1][5]
    $aAll[$i-1][$j-1]=$temp[$j]
    Next
    Next
    ReDim $aAll[(UBound($aAll) / 4)-1][5]

    [/autoit] [autoit][/autoit] [autoit]

    Local $aE[UBound($aAll)]

    [/autoit] [autoit][/autoit] [autoit]

    For $i=0 to Ubound($aAll)-1
    If StringInStr($aAll[$i][0],$sGame) > 0 And $aAll[$i][1] = $sPreis And $aAll[$i][2] = $sAnzahl And $aAll[$i][3] = $sPlet And $aAll[$i][4] = $sUser Then
    $aE[$i] = $aAll[$i][0]&"|"&$aAll[$i][1]&"|"&$aAll[$i][2]&"|"&$aAll[$i][3]&"|"&$aAll[$i][4]
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($aE)
    EndFunc

    [/autoit]
  • Da hatte ich btw einen Fehler drin, mein redim ist in der falschen Schleife gelandet. Hier mal eine etwas bessere Fassung:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <Inet.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Suche("ll","10-15","2","MacOSX","Admin")

    [/autoit] [autoit][/autoit] [autoit]

    Func Suche($sGame,$sPreis,$sAnzahl,$sPlet,$sUser)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aAll[1][5] ; 1 Reihe, 5 Spalten
    Local $aE[1]

    [/autoit] [autoit][/autoit] [autoit]

    $sSource = _INetGetSource("http://accoutnspace.ac.funpic.de/Games.txt")
    $aRows = StringSplit($sSource,"|")

    [/autoit] [autoit][/autoit] [autoit]

    For $i=1 to $aRows[0]
    if $i > 1 then ReDim $aAll[UBound($aAll)+1][5]
    $temp = StringSplit($aRows[$i],",")

    [/autoit] [autoit][/autoit] [autoit]

    For $j = 1 to $temp[0]
    $aAll[$i-1][$j-1]=$temp[$j]
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    For $i=0 to Ubound($aAll)-1
    If StringInStr($aAll[$i][0],$sGame) > 0 And $aAll[$i][1] = $sPreis And $aAll[$i][2] = $sAnzahl And $aAll[$i][3] = $sPlet And $aAll[$i][4] = $sUser Then
    _ArrayAdd($aE,$aAll[$i][0]&"|"&$aAll[$i][1]&"|"&$aAll[$i][2]&"|"&$aAll[$i][3]&"|"&$aAll[$i][4])
    EndIf
    Next
    _ArrayDelete($aE,0)
    _ArrayDisplay($aAll)
    _ArrayDisplay($aE)
    EndFunc

    [/autoit]