Array Problem - Array variable has incorrect number of subscripts or subscript .blablabla

  • Das Skript liest den Quelltext von Patch-info aus und verarbeitet ihn(es sollte)
    Egal, welche Werte für das $Entries - Array eingesetzt werden, es will nicht klappen....

    Code
    C:\Dokumente und Einstellungen\JoEtHeKiLlEr\Desktop\PatchInfo.AU3 (17) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:


    Hier mal der Quelltext:

    Spoiler anzeigen
    [autoit]

    Global $SourceEntries[4],$Replacements[3],$_working[8],$link[6],$Entries[x][x][x]
    ;$t=FileOpen("Quelltext.txt",0)
    #include<ie.au3>
    $oIE=_IECreate("http://patch-info.de/categories/6-Windows-XP",0,0)
    _IELoadWait($oIE)
    ;$Source=FileRead($t)
    $Source=_IEDocReadHTML($oIE)
    _IEQuit($oIE)
    StringReplace($Source,"serendipity_title","serendipity_title")
    $Replacements[1]=@extended
    ;ReDim $Entries[$Replacements[1]+1][x][x]
    For $Durchlauf1=1 To $Replacements[1]
    $SourceEntries[1]=StringTrimLeft($Source,StringInStr($Source,'serendipity_title',0,$Durchlauf1))
    $SourceEntries[2]=StringTrimLeft($SourceEntries[1],StringInStr($SourceEntries[1],'>',0,2))
    ;$SourceEntries[3]=StringLeft($SourceEntries[2],StringInStr($SourceEntries[2],"-->")-1)
    $SourceEntries[3]=StringLeft($SourceEntries[2],StringInStr($SourceEntries[2],"</div>")-1)
    MsgBox(0,"",$SourceEntries[3])
    $Entries[$Durchlauf1][2]=StringLeft(StringTrimLeft($SourceEntries[3],StringInStr($SourceEntries[3],'(<a href="')+9),StringInStr(StringTrimLeft($SourceEntries[3],StringInStr($SourceEntries[3],'(<a href="')+9),'"')-1)
    $PreName=StringLeft($SourceEntries[3],StringInStr($SourceEntries[3],'-'))
    If StringInStr($PreName,"(MS")>0 Then
    $PreName=StringTrimRight($PreName,6)
    EndIf
    $PreName=StringLeft($PreName,6)
    If StringIsDigit($PreName)=0 Then
    If $PreName="Window" Then
    $PreName=StringLeft($SourceEntries[2],StringInStr($SourceEntries[2],')'))
    EndIf
    If $PreName="Option" Then
    $PreName=StringTrimLeft(StringLeft($SourceEntries[2],StringInStr($SourceEntries[2],'-')-1),10)
    EndIf
    Else
    $PreName="KB"&$PreName
    EndIf
    $Entries[$Durchlauf1][1]=$PreName
    $date=StringRight(StringLeft($SourceEntries[3],StringInStr($SourceEntries[3],"</a>")-1),8)
    $Entries[$Durchlauf1][3]=$date
    StringReplace($SourceEntries[3],'<b><u>','<b><u>')
    $InEntries=@extended
    If $InEntries>=UBound($Entries,2) Then
    ReDim $Entries[1][$InEntries+1]
    EndIf
    For $Durchlauf3=1 To $InEntries
    $_working[1]=StringInStr($SourceEntries[3],'<b><u>',0,$Durchlauf3)
    $_working[3]=StringTrimLeft($SourceEntries[3],$_working[1]+5)
    $_working[2]=StringInStr($_working[3],'</u></b>',0,1)
    $_working[4]=StringLeft($_working[3],$_working[2]-1)
    MsgBox(0,"",$_working[4])
    $_working[5]=StringTrimLeft($_working[3],StringInStr($_working[3],'</u></b>')+7)
    $_working[6]=StringInStr($_working[5],'<br />')
    If $_working[6]=1 Then
    $_working[6]=StringInStr($_working[5],'<br />',0,2)
    EndIf
    $Beschreibung=StringLeft($_working[5],$_working[6]-1)
    $Beschreibung=StringReplace($Beschreibung,"<i>","")
    $Beschreibung=StringReplace($Beschreibung,"</i>","")
    $Beschreibung=StringReplace($Beschreibung,"<u>","")
    $Beschreibung=StringReplace($Beschreibung,"</u>","")
    StringReplace($Beschreibung,"<a href=","<a href=")
    $Replacements[2]=@extended
    For $Durchlauf2 = 1 To $Replacements[2]
    $link[1]=StringInStr($Beschreibung,"<a href=",0,1)
    $link[2]=StringInStr($Beschreibung,"</a>",0,1)+4
    $link[3]=StringMid($Beschreibung,$link[1],$link[2]-$link[1])
    MsgBox(0,"Quelltext",$link[3])
    $link[4]=StringMid($link[3],StringInStr($link[3],">")+1,StringInStr($link[3],"</a>")-StringInStr($link[3],">")-1)
    MsgBox(0,"Alias",$link[4])
    $link[5]=StringMid($link[3],10,StringInStr($link[3],'"',0,2)-10)
    MsgBox(0,"Url",$link[5])
    $Beschreibung=StringReplace($Beschreibung,$link[3],$link[4])
    Next
    Next

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

    Next

    [/autoit]


    Ich hab keine Ahnung warum... ...es nicht klappt


    ...BamBaBumpBump...

    Einmal editiert, zuletzt von JoEtHeKiLlEr (22. September 2007 um 16:01)

  • Beim schnellen Durchsehen fiel mir auf: du hast

    [autoit]

    Global $SourceEntries[4],$Replacements[3],$_working[8],$link[6],$Entries[x][x][x]

    [/autoit]

    geschrieben und dann später

    [autoit]

    $Entries[$Durchlauf1][1]=$PreName

    [/autoit]

    Da ist es kein Wunder, daß das nicht klappt. Wenn du sagst, daß $Entries 3 Dimensionen hat(im gesamten Programm) dann mußt du dich auch dran halten ;)
    Mal ganz abgesehen davon, daß ich nicht verstehe, seit wann AutoIt eine Deklaration in der Form

    [autoit]

    $Entries[x][x][x]

    [/autoit]

    'kennt'..
    (Das x ist ja unbekannt für AutoIt, aber ein $x wäre genauso wenig bekannt, mglw 0 und damit schlagen alle Zugriffe auf Indizes > 0 fehl)
    Im Klartext: Schau deinen Code mal auf diese Fehler nochmal durch ^^
    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

    2 Mal editiert, zuletzt von ytwinky (22. September 2007 um 16:48)

  • habe mir wohl dann etwas falsches überlegt...
    habe gedacht
    $Entries[1]=Hotfixname 1. Eintrag
    $Entries[1][1]=Releasedatum
    $Entries[1][2]=Downloadpfad
    $Entries[1][3][1]=Text
    $Entries[1][3][2]=Text der durch ein Link-Alias ersetzt wird
    $Entries[1][3][3][1]=Link1
    ...
    ...

    so werde es gleich nocheimal so machen, wie du es vorgeschlagen hast... :D