Beschreibung zur StringInStr Funktion

  • Hallo,
    in der Beschreibung zur StringInStr steht folgendes:

    Zitat

    StringInStr ( "string", "substring" [, casesense [, occurrence [, start [, count]]]] )
    ....
    occurrence >>> [optional] Das wievielte Auftreten des Unterstrings soll gefunden werden. Ist der Wert negativ, wird von rechts ausgehend gesucht. Der Standardwert ist 1 (erstes Auftreten von links ausgehend).

    Die Aussage "Ist der Wert negativ, wird von rechts ausgehend gesucht." stimmt nicht, es wird immer von links gesucht! :rofl:

    Eine Lösung wenn trotzdem von rechts gesucht werden soll ist folgende:
    $iPosTrennzeichen = StringInStr(StringReverse($sText), " ")

    Gruß Ingo

  • Vielleicht verwirrt, dass zwar von rechts gesucht, die zurückgegebene Position aber von links gerechnet ist.

  • Hi,
    das kommt davon, wenn man nicht richtig liest bzw. etwas hereininterpretiert, was nicht dort steht. Oder auch nicht beachtet, was die eigentliche Funktion zurückgibt:

    Zitat von aus der Hilfe

    Rückgabewert
    Erfolg: Gibt die Position des Unterstrings zurück.

    Und die Position wird bei von links nach rechts schreibenden Kulturen schon IMMER von links gezählt.

    Und wer lesen kann ist klar im Vorteil! In der zitierten Hilfezeile steht EXAKT was passiert:

    Das wievielte Auftreten des Unterstrings soll gefunden werden.

    Bingo, die Position des Suchstrings wird zurückgegeben.

    Vielleicht verwirrt, dass zwar von rechts gesucht, die zurückgegebene Position aber von links gerechnet ist.

    Naja, da ich weiß, dass du die sprachlichen Feinheiten durchaus beherrschst :thumbup: , schlage doch mal vor, wie man die POSITION des Unterstrings besser beschreiben kann als in der aktuellen Hilfe. Und wie man die SUCHRICHTUNG (die mit der Position nichts zu tun hat) davon trennt. :D
    /whispermode ON
    Ich vermute einfach, dass das trotz deiner Mühe genau so viel nützen würde wie die vielen anderen Hinweise in der Hilfe (und nicht nur dort) auch, nämlich nichts! Man muss nicht nur lesen können, sondern auch verstehen. Egal, aber wenigstens ist dem TE zu Gute zu halten, dass er die Hilfe gelesen hat. Die Sache mit dem VERSTEHEN der Sätze, das üben wir dann noch :D
    /whispermode OFF


    @'Donsen64

    Eine Lösung wenn trotzdem von rechts gesucht werden soll ist folgende:
    $iPosTrennzeichen = StringInStr(StringReverse($sText), " ")
    Gruß Ingo

    Urgs, DAS ist genauso falsch. Es wird immer noch von links GESUCHT, lediglich die POSITION wird von rechts angegeben. Du solltest dir Gedanken darüber machen....
    Übrigens muss nicht der gesamte String zeitaufwendig umsortiert werden, ein simples

    [autoit]

    $test="Organisation"

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

    $pos_von_links=stringinstr($test,"a",1,-1) ;Position letztes "a"
    $pos_von_rechts=stringlen($test)-stringinstr($test,"t",1,-1)+1 ;stringlen() kostet nur einige Takte

    [/autoit]


    Übrigens wurde das Suchen von rechts deshalb implementiert, um bei "großen" Strings die Laufzeiten extrem zu beschleunigen. (Das casesense-Flag bringt den Speed! )
    Wenn man in einem 500MB großen Text-String die 12.-letzte Zeile sucht, oder in einer großen Bitmap das letzte rote Pixel, DANN macht das Suchen von rechts sehr wohl Sinn. Und es wird auch die m.E. "sinnvolle" Position zurückgegeben. Denn genau diese Position wird von den Stringfunktionen (bspw. StringInStr(), StringMid(), StringLeft() )verwendet.

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    3 Mal editiert, zuletzt von Andy (6. Dezember 2014 um 09:54)

  • Hallo zusammen,
    Ok da habe ich wohl wirklich die Beschreibung nicht richtig verstanden. Vielen Dank an Andy für seine umfangreichen Ausführungen! Habe übrigens den Titel mal gleich geändert, ist ja keine Fehler in der Beschreibung sondern der Fehler sitzt 80cm vor dem Bildschirm. :)

    Allerdings könnte ich mir vorstellen, dass ich nicht der einzige bin dem es so geht. Um das zu vermeiden könnte eine Anpassung der Hilfe nach meiner Meinung durchaus hilfreich sein. Hier meine Vorschläge:

    Zitat

    Rückgabewert
    Erfolg: Gibt die Position des Unterstrings unabhängig von der Suchrichtung immer von links zurück.

    Zitat

    occurrence [optional] Das wievielte Auftreten des Unterstrings soll gefunden werden. Ist der Wert negativ, wird von rechts ausgehend gesucht, das zurückgegebene Ergebnis ist aber trotzdem von links aus gesehen. Der Standardwert ist 1 (erstes Auftreten von links ausgehend).


    Soweit meine Vorschläge für eine Optimierung der Hilfe in diesem Bereich. Die AutoIT Version ist übrigens die 3.3.12.0.

    Gruß Ingo

  • Naja, da ich weiß, dass du die sprachlichen Feinheiten durchaus beherrschst :thumbup: , schlage doch mal vor, wie man die POSITION des Unterstrings besser beschreiben kann als in der aktuellen Hilfe. Und wie man die SUCHRICHTUNG (die mit der Position nichts zu tun hat) davon trennt. :D

    Mein Kommentar war nicht als Vorschlag zur Verbesserung des Textes im Help File gedacht sondern als Erläuterung für den OP.
    Aus meiner Sicht ist die bestehende Beschreibung mehr als ausreichend.

    • Offizieller Beitrag

    Um das zu vermeiden könnte eine Anpassung der Hilfe nach meiner Meinung durchaus hilfreich sein.


    Sollen wir uns wirklich auf das US-Verbraucherniveau hinabbegeben müssen und Mikrowellen mit dem Hinweis versehen, dass man darin keine Katzen trocknen darf?
    Nichts anderes wäre die Erklärung von Selbstverständlichkeiten.

  • Oh doch, bitte, bitte! Ich suche nämlich schon lange eine Bedienungsanleitung für dieses Forum. Inkl Gefahrenhinweisen :)

  • Ich habe zwar nur einen nachweislichen IQ von 141, aber ich brauche keine Bedienungsanleitung für dieses Forum, inkl. Gefahrenhinweisen.
    .
    Ich bin blond genug. :rofl:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Langsam wird das Bild komplett: Frau, Dänin, blond, Kind ... Viel fehlt nicht mehr für ein vollständiges NSA Profil :)

  • Du "petz petz". Aber eine Fehler hat sich eingeschlichen bei dem NSA Profil.
    Die NSA darf mich mal gaanz gerne haben. :p

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Pffff,
    glaubt hier jemand wirklich, dass es etwas ändern würde, wenn man "Selbstverständlichkeiten" explizt erklärt?!
    Die Generation Smartphone ist doch ohnehin nicht in der Lage/Willens, sich mit Inhalten zu beschäftigen, welche 20-30 Zeichen übersteigen!

    Und es bring überhaupt nichts, Hinweise in die Gebrauchsanleitung für Mikrowellen zu drucken, dass nasse Katzen nicht darin getrocknet werden dürfen. Es werden genauso viele Katzen in Mikrowellen gegrillt wie vorher, lediglich der Hersteller der Mikrowelle ist aus der Haftung raus....
    Den Katzen nützt das nix!

  • Es ging bei solchen Anleitungen immer nur um Haftung - sonst wären sie ja verständlich geschrieben.

  • Hallo zusammen,
    ich wusste schon, dass ich nicht viel Ahnung von Programmierung habe. Aber das es so schlimm ist war mir dann doch nicht bewusst. Ich hoffe nur das alle anderen AutoIT Nutzer besser sind als ich und solche "Selbstverständlichkeiten" immer genau wissen und auch umsetzen können. Eigentlich hatte ich AutoIT als eine Programmiersprache für genau solche Gelegenheitsprogrammierer wie ich das bin verstanden und wollte vermeiden, dass andere genau den gleichen Fehler machen.

    Aber auf jeden Fall vielen Dank an alle, ich habe etwas dazu gelernt und weiß jetzt sicher wie die Funktion StringInStr arbeitet. :)

    Bitte den Beitrag nicht falsch verstehen, ich weiß welche hervorragende Arbeit hier im Forum und bei der Programmierung von AutoIT geleistet wird und bin auch immer sehr dankbar wenn ich hier Anregungen für meine Projekte bekomme! :rock:

    Gruß Ingo

  • Aber das es so schlimm ist war mir dann doch nicht bewusst.

    Also mir war von Anfang an bewusst, das ich nicht mehr konnte damals als Batchdateien zu erstellen, als ich hier her gekommen bin. Mich begeisterte AutoIt und dann auch die EDV. Hat
    mir beruflich und privat sehr viel erleichtert und ich habe auch sehr viel gelernt, neben AutoIt auch sehr viel über andere Bereiche der EDV (Soft- und Hardware). Mich hat es so begeistert, was mit AutoIt zu machen ist, das ich jedem sagen kann, es macht spaß sich mit AutoIt auseinander zu setzen. Hier im Forum bekommt man immer Hilfe, und wenn man sie hier nicht findet, gibt es einige, die auch bei den anders sprachigen AutoIt Foren rein schauen. Überall bekommt man freundliche Hilfe, solange man die wenigen Forenregeln beachtet.
    .
    Also geh mit SPASS an die Sache, wenn es für DICH privat ist, das Du dich mit AutoIt beschäftigst.
    .
    Ein Schmunzeler (heißt das so?)
    Durch den Beitrag hier, habe ich mich mit StringInStr auseinander gesetzt und wieder einiges dazu gelernt. Also, das zeigt, durch Deinen Beitrag haben nun mindestens zwei (Du und ich) etwas dazu gelenrt.


    water:
    Mist, nun hat die NSA ein weiteres Wissen über mich. Sie wissen das ich mit StringInStr wahrscheinlich umgehen kann. DANGER-NSA-AKTE-ALINA auf rot setzen. :rofl:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Moin Donsen64-Ingo ;)

    Ich weiß ja nicht, was Du beruflich machst, so kann ich Dir weder zustimmen, noch ... ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl