autoit3 problem (_stringbetween)

02/24/2011 08:23 chillsema#1
Hi all ... ich bin neu hier und habe mit autoit angefangen.
Ich habe mit mehrere Tutorials durchgelesen und wollte jetzt was eigenes schreiben... (Ogamebot nach anleitung
[Only registered and activated users can see links. Click Here To Register...])

...bin bisher jedoch nicht sehr weit gekommen, da ich Probleme beim auslesen des quelltextes habe


Wenn ich den Code so schreibe hat der Array bei der Asusgabe keinen Wert

Code:
Dim $session[50]
_IeLoadWait($oIE,1000,8000)
$HTML = _IEDocReadHTML ($oIE)
$session[0] = _StringBetween($HTML,'var session =','var vacation')
MsgBox (0,"session",$session[0])
$session[0] = StringTrimRight($session[0],3)
MsgBox (0,"session",$session[0])

und wenn ich den Code so schreibe bekomme ich folgende Fehlermeldung:
==> Subscript used with non-Array variable.:

Code:
Dim $session[50]
_IeLoadWait($oIE,1000,8000)
$HTML = _IEDocReadHTML ($oIE)
$session = _StringBetween($HTML,'var session =','var vacation')
MsgBox (0,"session",$session[0])
$session[0] = StringTrimRight($session[0],3)
MsgBox (0,"session",$session[0])

...ich bin es gewohnt, dass beim scripten was nicht passt, aber ich bin schon seit zwei Tagen an dem Problem und muss endlich meinen Fehler verstehen, weil ich für den restlichen Bot weitere Auslesen brauche.


achja ich hatte die Theorie, dass der Fehler ist, dass _stringbetween einen array gibt und StringTrimRight mit einem string arbeitet (aber hab was das angeht zuwenig Kenntnis), aber das Komische war, dass zwischendurch bei leichter Veränderung das Script ging und meist beim 2ten Versuch schon nicht mehr

...hoffe, dass meine Frage hier so stehen darf und nicht 100% überflüssig ist
(ansonsten bitte ich darum, das sie verschoben wird)

lg chillsema
02/24/2011 13:06 SwarN#2
Weiß zwar nicht genau was du machen willst bzw. habe mich mit webprogrammierung (quelltexte auslesen usw.) noch nicht beschäftigt aber bei dem 2. teil kann ich dir definitiv sagen,

dass wenn du
$session so einen wert zuweißt diese als normale variable hernimmst, du hast sie jedoch oben als wies richtig ist array deklariert. D.h. du musst das auch so verwenden wie ein array, deshalb die fehlermeldung.

ich hab jetzt kurz nochmal draufgeklickt auf das tut,

du hast ja oben
Dim $session[50]
gemacht, hier deklarierst du das als array, ich konnte aber im tut nix von nem array sehen (nu8r schnell überflogen), lass einfach mal das [50] weg und bei den aufrufen die [0], so behandelst du dann eine normale variable.
02/24/2011 17:28 chillsema#3
... also ich hab $session als Array deklariert (mit Dim[50])
weil _stringbetween nur einen array ausgibt
([Only registered and activated users can see links. Click Here To Register...])

...hab deine Idee trozdem um gesetzt nur leider mit dem Resultat, dass session 0 ist...
wie gesagt denke dass das daran liegt das stringbetween einen array ausgibt und ich eine Variable zuordne..

...ich habe das Problem zwar nicht gelöst bin aber endlich weitergekommen, indem ich an einer anderen stelle die Session ausgelesen habe

Ersatzcode
Code:
Dim $session[50]
_IeLoadWait($oIE,1000,8000)
$HTML = _IEDocReadHTML ($oIE)
$session =_StringBetween($HTML,'session=','">')
MsgBox (0,"session",$session[0])
_IENavigate($oIE,"http://uni"&$server&".ogame.de/game/index.php?page=resources&session="&$session[0])
Die Session wird gebraucht damit ich auf die nexte seite komme...

trozdem vielen Dank für deine Mühe und ich bin weiter an der Lösung des Problem interessiert
vllt lässt sich das Problem mit _ArrayToString lösen

lg chillsema
02/24/2011 19:36 derpo#4
Ändere Dim $session[50] zu Global $session[50].
Soweit ich weiß, brauchst du $session nicht am Anfang als Array definieren, _StringBetween macht das glaube ich von selbst.
Wenn du ein Problem damit hast, die Länge des Arrays rauszufinden, dann nimm UBound($string) . Wenn du es direkt nehmen willst, dann musst du $string[UBound($string) - 1] nehmen.