Array Fehler wie VERHEXT

  • Hallo ich bin dabei ein web Radio zu programmieren das läuft auch ganz gut wenn nicht plötzlich dieser Fehler in einer meiner include Funktionen aufgetaucht wäre und ich kann ihn einfach nicht beheben
    (Der Fehler Teil ist im Skript mit einem Kasten versehen)
    Zu Funktion des Skript Teils er List die Titel Infos von der Sender Seite aus (Funktioniert) und dann wird mit dem Interpret und Album Name ein Cover in Google gesucht. Dies wird dann im temp dir gespeichert im Haupt Skript wird dann diese Datei geöffnet und angezeigt soweit so gut doch dann kommt dieser seltsame Error : in Zeile 128 : ==> Subscript used with non-Array variable.:
    Ich habe schon alles probiert Dim Löschen umschreiben alles aber es klappt nicht bitte um Hilfe!

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon

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

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Constants.au3>
    #include <GUIEdit.au3>
    #include <GuiToolbar.au3>
    #include <inet.au3>
    #include <array.au3>
    #include <File.au3>

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

    #include <String.au3>
    _infos() ; -> nur zum test aktiv
    Func _infos()
    Dim $string[1]
    $string = _INetGetSource("http://www.deliciousagony.com/scripts/MakeNowplayingPage.php")

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

    Local $table = "", $buffer
    $split = StringSplit($string, "</P>", 1)
    For $i = 1 To UBound($split) - 1
    $between = _StringBetween($split[$i], ">", "<")
    $buffer = ''
    For $j = 0 To UBound($between) - 1
    $replace = StringRegExpReplace($between[$j], "<.+>", "")
    $replace = StringReplace($replace, "&nbsp;", " ")
    if StringRegExp($replace, "\w") Then $buffer &= $replace
    Next
    If $buffer <> '' Then $table &= $buffer & @CRLF
    Next

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

    $z = StringSplit ( $table, @LF )

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

    $nowplay = StringReplace($z[5],"(Prerecorded)Now Playing:","")

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

    $Filename = $nowplay

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

    $a=$filename

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

    $a=0
    $st=1
    $anfang=0
    while 1
    $a = StringInStr($filename,"\",0,$st)
    ;MsgBox(0,"",$anfang)
    if $a=0 then ExitLoop
    $st=$st+1
    $anfang=$a
    WEnd
    $anfang=$anfang + 1

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

    ; wo ist " - "
    $strich = " - "
    $Interende = StringInStr($filename,$strich)
    If $Interende = @error Then
    $Interpret = ":::::::"
    EndIf

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

    ;MsgBox(0,"Interende",$Interende)
    $bis = $Interende-$anfang
    $Interpret = StringMid($filename,$anfang,$bis)

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

    ;MsgBox(0,"Interpret",$Interpret)

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

    $titelanfang=$Interende + 3
    $komma = ", from the"
    $titelende = StringInStr($filename,$komma)
    If $titelende = @error Then
    MsgBox(48, "ERROR 345", "Fehler beim Sting (Datei Namen) -> Title'titelende'")
    EndIf
    ;MsgBox(0,"titelende",$titelende)
    $bis = $titelende - $titelanfang
    $Titel99 = StringMid($filename,$titelanfang,$bis)

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

    ;MsgBox(0,"Titel",$Titel)

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

    ; wo ist "`"
    $apo="`"
    $albumanfa=StringInStr($filename,$apo,0,1)
    If $albumanfa = @error Then
    MsgBox(48, "ERROR 347", "Fehler beim Sting (Datei Namen) -> Album'Anfang'")
    EndIf
    $albumende=StringInStr($filename,$apo,0,2)
    If $albumende = @error Then
    MsgBox(48, "ERROR 348", "Fehler beim Sting (Datei Namen) -> Album'Ende'")
    EndIf
    $albumanfa=$albumanfa + 1
    $albumende = $albumende
    $bis = $albumende - $albumanfa
    $Album = StringMid($filename,$albumanfa,$bis)

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

    ; Jahr
    $jahranfa = StringInStr($filename,", from the")
    If $jahranfa = @error Then
    MsgBox(48, "ERROR 343", "Fehler beim Sting (Datei Namen) -> Jahr'Anfang'")
    EndIf
    $jahrende = StringInStr($filename," album `")
    If $jahrende = @error Then
    MsgBox(48, "ERROR 343", "Fehler beim Sting (Datei Namen) -> Jahr'Ende'")
    EndIf
    $jahranfa = $jahranfa + 11
    ;MsgBox(0,"ja",$jahranfa)
    ;MsgBox(0,"ja",$jahrende)
    $bis = $jahrende - $jahranfa
    $Jahr = StringMid($filename,$jahranfa,$bis)

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

    $i = "1"
    $Titel1 = $Interpret & " " & $Album
    $Titel = $Titel1
    $Link = "http://www.google.de/images?hl=de&gbv=2&tbs=isch:1&aq=f&aqi=&oq=&gs_rfai=&q=" & StringReplace($Titel, " ", "+") & "+Cover#q=Dream+theater+cover&hl=de&gbv=2&tbs=isch:1,isz:m&source=lnt&ei=5kP1S8mlHpW4sgb-wYzvBQ&sa=X&oi=tool&resnum=1&ct=tlink";=> Neue version 2.1 bilder im grad mittel oder hör weden nur genommen damit kein bild mit nu 50x50 als cover kommt!!
    ; "http://images.google.de/images?um=1&hl=de&tbs=isch%3A1&sa=1&q="&StringReplace($Titel," ","+")&"+Cover&btnG=Suche&aq=f&oq=&start=0";=>alte version

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

    $sSource = __InetGetSource($Link)
    $aPic = StringRegExp($sSource, "(?>href=/imgres\?imgurl=)(.+?)(?>&imgrefurl=)", 3)
    FileDelete(@TempDir & "Cover-aktuell.jpg")
    InetGet($aPic[$i], @TempDir & "Cover-aktuell.jpg")

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

    ;$tag=_ID3GetTagField("TOFN")
    ;MsgBox(0,"ja",$tag)
    ;MsgBox(0,"",$Titel99 & $Interpret & $Album & $Jahr)
    Return $Titel99
    Return $Interpret
    Return $Album
    Return $Jahr
    EndFunc

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

    Func __InetGetSource($s_URL)
    Local $sString = InetRead($s_URL, 1)
    Local $nError = @error, $nExtended = @extended
    Return SetError($nError, $nExtended, BinaryToString($sString))
    EndFunc ;==>__InetGetSource

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

    Einmal editiert, zuletzt von BOOM (8. Juni 2010 um 17:50)

  • 1. Bitte Spoiler benutzen
    2. Es kommt Error = 1 raus-->keine Übereinstimmung-->dein Regexp falsch

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

    • Offizieller Beitrag

    Soll dein StringRegExp mehrere Treffer liefern? Du willst auf das 2. Element der Rüclgabe zugreifen.

    [autoit]

    InetGet($aPic[$i], @TempDir & "Cover-aktuell.jpg")

    [/autoit]


    Array´s fangen bei 0 an zu zählen und da $i= 1 ist wäre es dann der 2. Eintrag.

    Edit: Der gesuchte Pattern existiert nicht im Quelltext der Seite, nur mal so nebenbei.

  • nein er soll nur den ersten eintrag also ersten treffer liefern da er ja bei lied wechsel wieder das neue cover sucht
    P.S seltsam ist nur es hat bis vor kurzem noch so gefunzt