frage zu stringregexp

  • hallo undzwar wollte ich einen account checker machen den habe ich auch soweit ganz gut hinbekommen
    nun habe ich aber noch 1 problem
    er soll nach 2 sachen suchen und gegebenenfals in einer text datei speichern
    das wären 1mal die punkte
    und einmal der account typ
    er findet beides aber speichert nur die punkte

    Spoiler anzeigen
    [autoit]

    $sHTML = _IEBodyReadHTML($oIE)
    $aPunkte = StringRegExp($sHTML, 'Punktestand[^>]+>[^>]+>(\d+)', 3)
    $aTyp = StringRegExp($sHTML, 'Accounttyp[^>]+>[^>]+>(\w+)', 3)
    $bTyp= StringLen($aTyp);
    ;MsgBox(0, "", "Accounttyp: " & $aTyp[0] & @LF & "Punkte: " & $aPunkte[0])
    If $aPunkte[0] >= 8999 Then
    FileWriteLine($LogFile, @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " " & $aergebnis[$i][0] & ":" & $aergebnis[$i][1] & " / " & $aPunkte[0] & " / " & $aTyp[0])
    FileClose($LogFile)
    EndIf
    If $bTyp >=5 Then
    FileWriteLine($LogFile, @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " " & $aergebnis[$i][0] & ":" & $aergebnis[$i][1] & " / " & $aPunkte[0] & " / " & $aTyp[0])
    FileClose($LogFile)
    EndIf
    _IEQuit($oIE)
    next

    [/autoit]


    ich habe es mit stringregexp/stringinstr und wie im code schnipsel zu sehen stringlen ausprobiert

  • Hallo evelboy,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    und jetzt zu deinem Probelm:

    Zitat

    er findet beides aber speichert nur die punkte

    dann scheint es ja nicht an stringregexp zu liegen. Leider kann man das Skript nicht testen, da die dazugehörige URL bzw. der Quellcode der Seite fehlt.
    Was gibt denn die MSGBox aus?

    frohe Wihnachten

  • zum testen hatte ich die 1rst beste url genommen die ich offen hatte und das war uploaded .to ^^
    hier mal das ganze script

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <misc.au3>
    #include <IE.au3>
    #include <File.au3>

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

    Opt("CaretCoordMode",0)
    Local $oIE, $oForm, $oName, $oPass, $oSubmit
    Local $sHTML, $aPunkte, $aTyp , $LogFile , $bTyp;$sEmail, $sPassword,

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

    $LogFile = FileOpen(@ScriptDir & "\Log.txt", 1)

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

    Local $atest,$asplit,$o=0
    _FileReadToArray(@ScriptDir&"\test.ini",$atest)
    if @error or $atest[0]=0 then Exit
    Local $aergebnis[1][2]
    For $i = 1 to $atest[0]
    if not StringInStr($atest[$i],":") then ContinueLoop ;charakteristische Doppelpunkt finden
    $asplit=StringSplit($atest[$i],":")
    if @error Then ContinueLoop
    $o+=1
    ReDim $aergebnis[$o+1][2]
    $aergebnis[$o][0]=$asplit[1]
    $aergebnis[$o][1]=$asplit[2]
    Next

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

    ;Logindaten definieren
    ;$sEmail = "1721829"
    ;$sPassword = "Fghikgl"

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

    For $i=1 To UBound($aergebnis)-1
    ;IE starten und Login Seite ansteuern
    $oIE = _IECreate("http://www.uploaded.to/logout")
    _IENavigate($oIE, "http://www.uploaded.to/home?setlang=de")
    _IENavigate($oIE, "http://www.uploaded.to/login")

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

    ;Formulardaten finden
    $oForm = _IEFormGetCollection($oIE, 0)
    $oName = _IEFormElementGetCollection($oForm, 0)
    $oPass = _IEFormElementGetCollection($oForm, 1)
    $oSubmit = _IEFormElementGetCollection($oForm, 2)

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

    ;Formular füllen und abschicken
    _IEFormElementSetValue($oName, $aergebnis[$i][0])
    _IEFormElementSetValue($oPass, $aergebnis[$i][1])
    _IEAction($oSubmit, "click")
    _IELoadWait($oIE)

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

    ;Quelltext auslesen
    $sHTML = _IEBodyReadHTML($oIE)
    $aPunkte = StringRegExp($sHTML, 'Punktestand[^>]+>[^>]+>(\d+)', 3)
    $aTyp = StringRegExp($sHTML, 'Accounttyp[^>]+>[^>]+>(\w+)', 3)
    $bTyp= StringLen($aTyp)
    ;MsgBox(0, "", "Accounttyp: " & $aTyp[0] & @LF & "Punkte: " & $aPunkte[0])
    If $aPunkte[0] >= 8999 Then
    FileWriteLine($LogFile, @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " " & $aergebnis[$i][0] & ":" & $aergebnis[$i][1] & " / " & $aPunkte[0] & " / " & $aTyp[0])
    FileClose($LogFile)
    EndIf
    If $bTyp >=5 Then
    FileWriteLine($LogFile, @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " " & $aergebnis[$i][0] & ":" & $aergebnis[$i][1] & " / " & $aPunkte[0] & " / " & $aTyp[0])
    FileClose($LogFile)
    EndIf
    _IEQuit($oIE)
    next

    [/autoit]


    die msg box würde die punkte + den account typ ausgeben
    das passt auch alles soweit nur will ich das der zb. ein premium account speichert der keine bzw. unter 9000 punkte hatt und das macht er ja nicht
    (account zum testen 1458726:fpqeaqt das ist ein KEIN premium account sondern lediglich ein free account mit 0 punkten)

    Einmal editiert, zuletzt von evelboy (26. Dezember 2010 um 20:19)

  • Zitat

    ein premium account speichert der keine bzw. unter 9000 punkte hatt


    Das wäre dann z.B. If $aPunkte[0] < 9000 Then (Zeile 58), nicht If $aPunkte[0] >= 8999 Then.

    $bTyp= StringLen($aTyp) hast du da immernoch drin. $aTyp ist ein Array, kein String. Möglich wäre $bTyp= StringLen($aTyp[0]).