1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

==> Subscript used on non-accessible variable => Stringbetween

Dieses Thema im Forum "Support & Discussion" wurde erstellt von NongeII, 22. September 2017.

  1. NongeII

    NongeII New Member

    Registriert seit:
    15. September 2017
    Beiträge:
    4
    Zustimmungen:
    2
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Servus zusammen,
    ich stehe hier vor einem Rätsel, damit ihr von Anfang an einen Überblick habt, hier einen Codeausschnitt:

    Code (Text):
    ;Buylist einlesen
                    Local $stringItemlist = _GUICtrlListBox_GetText($WeaponBuylist, $cBuylist)

                    ConsoleWrite($stringItemlist&@CRLF)

                    Local $bPrice = _StringBetween($stringItemlist, "| Price:", " | ID: ")
                    Local $bItemID = _StringBetween($stringItemlist, "| ID: ", " | Type: ")
                    Local $bItemType = _StringBetween($stringItemlist, " | Type: ", " | ")
                    Local $bCurrency = _StringBetween($stringItemlist, "| Currency: ", " | Default: ")
                    Local $bDefault = _StringBetween($stringItemlist, "Default: ", "|GoldReach:")
                    Local $bGoldReach = _StringBetween($stringItemlist, "|GoldReach: ", " Amount:")
                    Local $bAmount = _StringBetween($stringItemlist, "Amount: ", "")

                    $dealerPost = "reloadToken=" & $aToken[0] & _
                            "&todo=purchase&merchanttype=" & $bItemType[0] & _
                            "&ittm=" & $bItemType[0] & _
                            "&ItemID=" & $bItemID[0] & _
                            "&defaultListItem=&amount=" & $bAmount[0] & _
                            "&" & $bItemType[0] & "_" & $bItemID[0] & "_merchantAmount=" & $bDefault[0] & _
                            "&" & $bItemType[0] & "_" & $bItemID[0] & "_currency=" & $bCurrency[0] & _
                            "&" & $bItemType[0] & "_" & $bItemID[0] & "_price=" & $bPrice[0] & _
                            "&" & $bItemType[0] & "_" & $bItemID[0] & "_confirm" & _
                            "Update=Die+Kaufmenge+wurde+automatisch+angepasst.+M%C3%B6chtest+du+wirklich+fortfahren%3F&amount_workspace=" & $bAmount[0] & _
                            "&RTVT=" & $RTVT[0] & _
                            "&flexPositionV=952"
    Ich bekomme folgenden Error in den Console:

    Code (Text):
    >"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "C:\Users\Joshi\Desktop\DevBro\Bidtool.au3" /UserParams  
    +>11:00:47 Starting AutoIt3Wrapper v.17.224.935.0 SciTE v.3.7.3.0   Keyboard:00000407  OS:WIN_7/Service Pack 1  CPU:X64 OS:X64  Environment(Language:0407)  CodePage:0  utf8.auto.check:4
    +>         SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE   UserDir => C:\Users\Joshi\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\Joshi\AppData\Local\AutoIt v3\SciTE
    >Running AU3Check (3.3.14.2)  from:C:\Program Files (x86)\AutoIt3  input:C:\Users\Joshi\Desktop\DevBro\Bidtool.au3
    +>11:00:47 AU3Check ended.rc:0
    >Running:(3.3.14.2):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\Joshi\Desktop\DevBro\Bidtool.au3"  
    --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
    Hollow ammunition | Price:3000 | ID: 5 | Type: ammunition | Currency: gold | Default: 100 |GoldReach: OFF Amount: 50000
    "C:\Users\Joshi\Desktop\DevBro\Bidtool.au3" (826) : ==> Subscript used on non-accessible variable.:
    $dealerPost = "reloadToken=" & $aToken[0] & "&todo=purchase&merchanttype=" & $bItemType[0] & "&ittm=" & $bItemType[0] & "&ItemID=" & $bItemID[0] & "&defaultListItem=&amount=" & $bAmount[0] & "&" & $bItemType[0] & "_" & $bItemID[0] & "_merchantAmount=" & $bDefault[0] & "&" & $bItemType[0] & "_" & $bItemID[0] & "_currency=" & $bCurrency[0] & "&" & $bItemType[0] & "_" & $bItemID[0] & "_price=" & $bPrice[0] & "&" & $bItemType[0] & "_" & $bItemID[0] & "_confirm" & "Update=Die+Kaufmenge+wurde+automatisch+angepasst.+M%C3%B6chtest+du+wirklich+fortfahren%3F&amount_workspace=" & $bAmount[0] & "&RTVT=" & $RTVT[0] & "&flexPositionV=952"
    $dealerPost = "reloadToken=" & $aToken[0] & "&todo=purchase&merchanttype=" & $bItemType^ ERROR
    ->11:01:51 AutoIt3.exe ended.rc:1
    +>11:01:51 AutoIt3Wrapper Finished.
    >Exit code: 1    Time: 64.83
    Jetzt zu der Funktion,
    Ich möchte auslesen welcher Wert zwischen ' Type: ' und ' | Currency ' steht, dazu benutze ich
    Code (Text):
    Local $bItemType = _StringBetween($stringItemlist, " | Type: ", " | ")
    und bekomme den Error, den ihr im Debug sehen könnt.

    $stringItemlist ist einer von mir zurück gegebener String, diesen könnt ihr unten sehen, da ich ihn mit ConsoleWrite() ausgeben lassen hab, um zu kontrollieren, wo der Fehler liegt - ich sehe dort keinen, vielleicht ihr?

    Consolewrite: (Befindet sich auch im Debug oben)

    Code (Text):
    Hollow ammunition | Price:3000 | ID: 5 | Type: ammunition | Currency: gold | Default: 100 |GoldReach: OFF Amount: 50000
    Mich würde es sehr freuen, wenn mir hier geholfen werden kann!

    Mit lieben Grüßen

    Nonge
     
  2. CentuCore

    CentuCore New Member

    Registriert seit:
    6. Juli 2017
    Beiträge:
    1
    Zustimmungen:
    1
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Kann den Fehler mit dem Snippet nicht reproduzieren.
    Hast du dir mit _ArrayDisplay() schonmal $bItemType anzeigen lassen?
     
    w33dt4k3r gefällt das.
  3. NongeII

    NongeII New Member

    Registriert seit:
    15. September 2017
    Beiträge:
    4
    Zustimmungen:
    2
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Den Fehler habe ich behoben, indem ich die Items in eine .ini schreiben lasse und anschließend auslese. - So kann ich sie auch direkt beim erneuten öffnen wieder in die Listbox schreiben, schlau oder ? ^^

    Nun habe ich aber ein weiteres problem.. Ich möchte eine Postanfrage senden, darin enthalten die Items, ein Token und Rtvt.
    Sieht man im ersten Post auch, was genau ich da abschicken will.

    Ich bekomme beim und nach dem Abschicken keinen Error, soweit so gut.
    Wenn ich allerdings in mein Accountlogbuch gucke, hat er nichts gekauft.
    Ich habe per Fiddler den Post-Code abgefangen und mit meinem verglichen, es ist alles korrekt, bis auf Token und RTVT, diese ändern sich beim laden der Seite, ist aber nicht schlimm - lese ich ja aus und sende die " richtigen " mit.

    Ich habe auch ausprobiert, den String von Fiddler zu posten, habe dort dann selbstverständlich nur token und rtvt geändert - funktioniert auch nicht.
    Es handelt sich übrigens um das Spiel Seafight.
    Ich kann mir langsam nicht mehr erklären, wieso es nicht funktioniert..

    Hier mein Script, der kompletten Aktion:
    Code (Text):
    #Region **** WEAPONDEALERTOOL ****
            If GUICtrlRead($WeapondealerOnOFF) = 65 Then

                Local $CountWeapondealer = _GUICtrlListBox_GetCount($WeaponBuylist)
                $cBuylist = -1
                Local $aArray = IniReadSectionNames("sys/Dealerlist.ini")
                ; Check if an error occurred.
                If Not @error Then
                    ; Enumerate through the array displaying the section names.
                    For $i = 1 To $aArray[0]
                        $cBuylist = $cBuylist + 1
                        Local $sWinhttp = _easywinhttp("/index.es?action=internalMerchant&subact=Arms")
                        Local $sGold = _StringBetween($sWinhttp, 'id="displayGold">', "</span>")

                        ;Tokens einlesen
                        Local $aToken = _StringBetween($sWinhttp, 'name="reloadToken" value="', '" />')
                        Local $RTVT = _StringBetween($sWinhttp, "name='RTVT' value='", "'></form>")

                        Local $bPrice = IniRead("sys/Dealerlist.ini", $aArray[$i], "ItemPrice", "")
                        Local $bItemID = IniRead("sys/Dealerlist.ini", $aArray[$i], "ItemID", "")
                        Local $bItemType = IniRead("sys/Dealerlist.ini", $aArray[$i], "ItemType", "")
                        Local $bItemType2 = IniRead("sys/Dealerlist.ini", $aArray[$i], "ItemType2", "")
                        Local $bCurrency = IniRead("sys/Dealerlist.ini", $aArray[$i], "Currency", "")
                        Local $bDefault = IniRead("sys/Dealerlist.ini", $aArray[$i], "DefaultAmount", "")
                        Local $bGoldReach = IniRead("sys/Dealerlist.ini", $aArray[$i], "GoldReach", "")
                        Local $bAmount = IniRead("sys/Dealerlist.ini", $aArray[$i], "Amount", "")

                        $dealerPost = "reloadToken=" & $aToken[0] & _
                                "&todo=purchase&merchanttype=" & $bItemType2 & _
                                "&ittm=" & $bItemType & _
                                "&ItemID=" & $bItemID & _
                                "&defaultListItem=&amount=" & $bAmount & _
                                "&" & $bItemType & "_" & $bItemID & "_merchantAmount=" & $bDefault & _
                                "&" & $bItemType & "_" & $bItemID & "_currency=" & $bCurrency & _
                                "&" & $bItemType & "_" & $bItemID & "_price=" & $bPrice & _
                                "&" & $bItemType & "_" & $bItemID & "_confirm" & _
                                "Update=Die+Kaufmenge+wurde+automatisch+angepasst.+M%C3%B6chtest+du+wirklich+fortfahren%3F&amount_workspace=" & $bAmount & _
                                "&RTVT=" & $RTVT[0] & _
                                "&flexPositionV=996"
                        ConsoleWrite($dealerPost & @CRLF)

                        _easywinhttp("/index.es?action=internalMerchant&subact=Arms", "POST", $dealerPost)
                   
                    Next
                EndIf
            EndIf
            #EndRegion **** WEAPONDEALERTOOL ****
    Und einmal der String von Fiddler, vielleicht findet ihr den Fehler..
    Code (Text):
    reloadToken=98723aa3ae2dde7b8f4b73bc582a1de3&todo=purchase&merchanttype=weapons&ittm=Weapon&ItemID=1&defaultListItem=&amount=1&weapons_p1_merchantAmount=0&weapons_p1_currency=gold&weapons_p1_price=750&weapons_p1_confirmUpdate=Die+Kaufmenge+wurde+automatisch+angepasst.+M%C3%B6chtest+du+wirklich+fortfahren%3F&amount_workspace=1&amount_dispose=0&sell_weapons_1_merchantAmount=1&sell_weapons_1_currency=gold&sell_weapons_1_stock=2&sell_weapons_1_confirmUpdate=1&amount_dispose_workspace=0&RTVT=maindbb11efc7962d7d091614061d224&flexPositionV=0
    Ich danke schon mal !

    Nonge
     

Diese Seite empfehlen

Die Seite wird geladen...