_FFTableWriteToArray - Problem

  • Hallo,

    ich habe leider folgendes Problem..

    Wenn ich versuche aus folgendem Htmlcode die Zahl "101", welche Variabel ist, rauszulesen

    Code
    <td><a href="/game.php?village=101446&amp;screen=wood"><img src="graphic/holz.png?1" title="Holz" alt=""></a></td>
    <td><span id="wood" title="8">101</span>&nbsp;</td>

    mit folgendem Script

    [autoit]


    Dim $vTable [100]
    $sMode = "id"
    $aTable = _FFTableWriteToArray($vTable[ $sMode = "id"])
    _ArrayDisplay($aTable)

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

    )

    [/autoit]

    rauszulesen, kommt immer folgende Errormeldung

    "_FFSend: try{gBrowser.tabContainer.selectedIndex = 1}catch(e){'_FFCmd_Err';};
    __FFRecv: 1
    _FFTableWriteToArray ==> Invalid value: $sMode: index"

    Ich habe schon alles möglich Probiert.. mal kam ein Error, mit dem Inhalt das die
    Variable "sMode" "non-array" ist.. ich weiß leider auch gar nicht, ob das überhaupt die richtige Funktion ist?

    Aber laut dem obigen Code, sollte es doch eine Tabelle sein, welche dort dargestellt wird.. ich werd leider nicht draus schlau!

    Ich habe vor, die Ressourcen auszulesen mit der jeweiligen Stufe der Mienen zu multiplizieren und somit errechnen zu lassen,
    zu welchem Zeitpunkt wie viele Ressourcen in dem Dorf sind. Es gibt zwar bereits so ein Script in java, aber selbst gemacht ist
    es doch schöner... Ich hoffe, dass mir jemand helfen kann !

    Lg
    Dustyn

  • Hallo,

    entschuldigung für den Doppelpost!

    Nach weiterem Testen komme ich zu dem Ergebnis, dass ich am besten den Wert
    mit folgender Funktion erhalten kann

    [autoit]

    $aTable = _FFTableGetCell("wood",?2?,?6?,"id")

    [/autoit]

    Wobei er bei dieser Funktion die Reihe und Zeile benötigt, in welchem der zu suchende Wert
    sich befindet.. Aber wie finde ich heraus, welche Reihe und Zeile das ist? Gibt es dafür einen
    Trick/Programm?

    lg,
    Dustyn

  • Hallo,

    ich schau mal eben nach dem Link -
    http://forum.die-staemme.de/showthread.php?t=82777 das ist er.

    Diese Script würde ich gerne nachempfinden und selbst schreiben..

    Das Programm wäre verboten, würde ich klicke emulieren ! Aber ich klicke
    immer noch Bericht für Bericht selbst an, somit ist es legal:)

    Es geht mir nur um die Erfahrung, mit der FF.au3 umgehen zu können..
    Wie man die Werte aus dem Code ausließt, weiß ich mittlerweile auch.

    Würde es nur gerne mittels einer eleganteren Tabellenabfrage Funktion machen :)

    Im Endeffekt soll es dann im Hintergrund die Daten der neuen Berichte speichern und mir als Tabellenform
    angeben können, welches Dorf wie viele Ressourcen hat - damit ich dann bequem weiß, welches Dorf genügend
    Ressourcen hat, dass sich lohnt sie loszuschicken.

    Die kann man auch per exel Tabelle visualisieren, ich weiß.. Würds nur gerne so machen :)

    Lg,
    Dustyn

  • Na gut, dann nimm einfach XPath wenn es mit Zählen nicht so klappt:

    [autoit]

    $iWood = _FFXPath("//span[@id='wood' and title='8']")

    [/autoit]


    den Ausdruck kannst du auch mit dem FF-AddOn XPather erstellen, damit erübrigt sich das Gewühle durch den HTML-Quellcode völlig.

    [EDIT]
    Wenn du dir _FFXPath genauer ansiehst kannst du damit aus Tabellen auch Zeilen und/oder Spalten auslesen und als Array zurückbekommen.

  • Hallo,

    danke für die Antwort.

    Inwiefern kann ich dies denn auslesen? Habe es mir angeschaut, aber auf anhieb wohl leider nicht erkannt!

    Wenn ich folgenden Befehl versuche -
    $aTable = _FFTableWriteToArray("ds_body","id")

    Gibt er mir als Error


    C:\Dokumente und Einstellungen\Gamer\Desktop\Botting\includes\FF.au3 (2878) : ==> Array variable subscript badly formatted.:
    Local $a_TableCells[$i_cols][$trs]
    Local $a_TableCells[^ ERROR


    Weiß jemand, woran das liegen könnte? ^^

    Lg,
    Dustyn

  • Sieht nach einem Fehler in der Funktion _FFTableWriteToArray aus. Muß ich mich mal reinlesen; das ist die einzige Funktion die ich nicht selbst geschrieben habe und auch fast nie verwende, da _FFXPath um Welten schneller ist.

  • Stimmt, scheint damit auch sehr gut zu gehen.

    Aber was ist, wenn ich eine Input Box ansprechen will?
    Auch via Xpath? Und wenn ja, wie?

    Lg

  • Ja wohl war, mit Xpath geht alles. Wenn du in die FF.au3 ansiehst, siehst du auch, daß viele Funktionen xpath benutzen.

    Für "eindeutige" Formular-Inputs sind allerdings die Funktionen _FFSetValueById/Name gedacht.

  • Hallo,

    danke für die Hilfe !

    Soweit so gut !

    Allerdings...

    [autoit]

    Do
    _FFLinkClick(">>","text")
    Until @Error = 0

    [/autoit]

    Geht bei mir nicht?
    Er beendet dann sofort..
    und wenn ich nur @Error setze, beendet er gar nicht..

    Wo liegt mein Denkfehler? ^^

    Lg,
    Dustyn

  • Hallo,

    was genau bedeutet "geht nicht"? Wird der Klick nicht ausgeführt? Was genau soll den passieren? Was soll die Schleife? Ist der Text evtl. noch nicht vorhanden? ... Also schwer zu sagen wo dein evtl. Denkfehler liegen könnte.

  • Hallo,

    Er findet den Link, klickt ihn auch so lange er da ist.
    I-wann ist die Liste durchgeklickt und der Button verschwindet.

    Nun sollte also, da der Button nicht mehr gefunden wird, ein @Error gesendet werden, dachte ich.

    Aber i-wie bekomme ich es nicht hin, dass wenn er den Button nicht mehr findet/existiert
    die Do-Schleife beendet ?

    Also Fehler kommt, wenn der Button nicht mehr da ist

    [autoit]

    _FFLinkClick ==> No match: $vSearch: >>

    [/autoit]

    Da wäre doch eigentlich @Error = 8 - laut beschreibung? Aber dann beendet er trotzdem nicht !

    Lg
    Dustyn

  • Hallo,

    da die Aktion erfolgreich war, beendet er nach dem ersten Klick auf den Button die schleife.

    Die Schleife soll aber erst beendet werden, wenn der Button weg ist !

    Wieso geht das nicht mein den @Error Werten? Sind die nicht dafür gedacht?

    lg

  • Geht über @error schon auch, kommt aufs Gleiche raus nur umständlicher.
    Die @error Werte sind mehr zur Fehlerdiagnose gedacht und die Funktion liefert bei erfolgreichem Klicken eine 1 ansonsten 0 - das ist etwas zweckmäßiger.

    Dann halt so:

    [autoit]

    While _FFLinkClick(">>","text")
    Wend

    [/autoit]