StringInStr Funktioniert nicht richtig

  • [autoit]

    While True $File = FileOpen($ChatLog,0) $LastLine = FileReadLine($File) If StringInStr($LastLine,"Hi Stan") Then Send("tHallo!") EndIf FileClose($File)WEnd

    [/autoit]

    Soll, wenn in der letzten Zeile "Hi Stan" gefunden wird, tHallo! zurückgeben, allerdings wird nichts zurückgegeben, was mache ich falsch?

  • [autoit]


    While True
    $File = FileOpen($ChatLog,0)
    $LastLine = FileReadLine($File)
    If StringInStr($LastLine,"Hi Stan") <> 0 Then ; Du brauchst hier ein "ungleich 0", da die Funktion die Position der "Fundstelle" zurück gibt, also nicht 0.
    Send("tHallo!")
    EndIf
    FileClose($File)WEnd

    [/autoit]

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)

  • Funktioniert nicht D:

  • [autoit]


    While True
    $File = FileOpen($ChatLog, 0)
    $LastLine = FileReadLine($File, -1) ; Ich habe noch ein -1 angehängt, da du ja laut des Variablen-Namens die letzte Zeile auslesen möchtest
    If StringInStr($LastLine, "Hi Stan") <> 0 Then ; Du brauchst hier ein "ungleich 0", da die Funktion die Position der "Fundstelle" zurück gibt, also nicht 0.
    Send("tHallo!")
    ; MsgBox(0, "TestBox", "Test, ob diese If-Abfrage wirklich aufgerufen wird")
    EndIf
    FileClose($File)
    WEnd

    [/autoit]

    Teste es mal so und am besten machst du dazu mal das Semikolon (;) in Zeile 6 weg, damit du siehst ob die If-Abfrage beachtet wird und nur dein Send() vielleicht nicht stimmt.

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)

    Einmal editiert, zuletzt von Joriktos (17. Februar 2013 um 14:21)

  • Auch schon versucht, ging nicht, Send wird erst garnicht aufgerufen, also stimmt wohl irgendwas mit StringInStr nicht.

  • Zitat

    Auch schon versucht, ging nicht, Send wird erst garnicht aufgerufen, also stimmt wohl irgendwas mit StringInStr nicht.

    Aha, und du bist der Auserwählte, der das festgestellt hat...
    Wie wäre es denn, in irgendeiner Weise eine Fehleranalyse zur Feststellung der Unfähigkeit des Scripters einzubauen, anstatt einen Thread zu eröffnen, der im Titel sowohl die Programmierer von AutoIt, als auch sämtliche Anwender der Funktion beleidigt!

    Stringinstr funktioniert nämlich einwandfrei...

    Spoiler anzeigen
    [autoit]


    $chatlog="chatlog.txt"
    filewrite($chatlog, "heyho das ist ein text mit dem Inhalt Hi Stan")

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

    While True
    $File = FileOpen($ChatLog, 0)
    $LastLine = FileReadLine($File, -1) ; Ich habe noch ein -1 angehängt, da du ja laut des Variablen-Namens die letzte Zeile auslesen möchtest
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $LastLine = ' & $LastLine & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If StringInStr($LastLine, "Hi Stan") <> 0 Then ; Du brauchst hier ein "ungleich 0", da die Funktion die Position der "Fundstelle" zurück gibt, also nicht 0.
    Send("tHallo!")
    ; MsgBox(0, "TestBox", "Test, ob diese If-Abfrage wirklich aufgerufen wird")
    EndIf
    FileClose($File)
    WEnd

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

    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Da muss ich Andy zustimmen!
    Wenn etwas nicht funktionieren mag, mit ConsoleWrite debuggen und rumprobieren und nicht gleich sagen, das die Funktion fehlerhaft ist.

    Ich habe mit "StringInStr" schon öfters gearbeitet und noch nie Probleme damit gehabt.

    Mfg

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Danke, Andy :)
    Leider war ich zu faul um es selber zu testen, sonst hätte ich nicht angefangen an meinen Programmier-Künsten zu zweifeln.. Ich wusste doch, dass der Fehler nicht an meinem Code liegt, sondern daran, wie er ihn anwendet ;)

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)

    • Offizieller Beitrag

    Deine Überschrift ist Bullshit!

    Richtig wäre:
    Mein Versuch mit StringInStr zu arbeiten schlägt fehl - was mache ich falsch?

    Und um deine Fehler zu sehen, müßtest du uns schon wissen lassen, wie der Inhalt, den du verarbeiten willst, aussieht.

    Btw. - Um nur zu prüfen, ob StringInStr etwas findet bedarf es keinerlei Vergleichselement. Hängt mit der Vergleichsform von If (bool) und der Interpretation von Werten durch AutoIt (0=False, alles andere ist True) zusammen:

    [autoit]

    If StringInstr($string, $InStr) Then ; wahr

    [/autoit]
  • Deine Überschrift ist Bullshit!

    Richtig wäre:
    Mein Versuch mit StringInStr zu arbeiten schlägt fehl - was mache ich falsch?

    Und um deine Fehler zu sehen, müßtest du uns schon wissen lassen, wie der Inhalt, den du verarbeiten willst, aussieht.

    Btw. - Um nur zu prüfen, ob StringInStr etwas findet bedarf es keinerlei Vergleichselement. Hängt mit der Vergleichsform von If (bool) und der Interpretation von Werten durch AutoIt (0=False, alles andere ist True) zusammen:

    [autoit]

    If StringInstr($string, $InStr) Then ; wahr

    [/autoit]

    Okay, danke, wusste ich noch nicht :) Man lernt jeden Tag was dazu...

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)