Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

  • Das macht in AutoIt absolut keinen Unterschied da beide Zeichen gültige Stringliterale darstellen.

    Moombas !

    Die Verwendung von einfachen( ' ) und doppelten ( " ) Anführungszeichen ist relevant, wenn Du sie z.B. in einem String, Parameter usw. verwenden möchtest !

    Beispiel :

    'Hallo "Moombas" - wie geht es' -> Hallo "Moombas" - wie geht es

    "Hallo 'Moombas' - wie geht es" -> Hallo 'Moombas' - wie geht es

    Ansonsten ist es, wie alpines geschrieben hat, egal !

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Möchte jetzt nicht ewig hin und her zitieren.

    Musashi : Das kann sein, das es mal bei mir durchaus bei Parameterübergabe der Fall war oder wenn ich in einem String " mit übergeben möchte, genau kann ich mich daran aber nicht mehr erinnern, nur das ich seit dem halt wie gesagt lieber ' als " verwende, da ich damit in der Regel auf der sicheren Seite bin, dies an wichtigen Stellen nicht zu "vergessen".

    Aber nun lasst uns wieder BTT, denn mit unserer Diskussion helfen wir dem TE mit seinem Problem nicht weiter außer, dass mein Vorschlag die " mit ' zu ersetzen Sinnfrei ist :)

    Ihr habt ja recht^^

    Vorschlag:

    Um zu prüfen ob hier evtl. Stringreplace ein Problem hat, könntest du mit Stringsplit testen ob die Prüfung auf den Teilstring korrekt läuft

    Code
    if Stringsplit($line3[0], '/')[2] = " Bevollmächtigter des Erzeugers" then ;"OK" in errorfile schreiben

    3 Mal editiert, zuletzt von Moombas (12. Dezember 2018 um 15:58)

  • Hallo Moombas,

    also

    Code
    Case StringInStr($line3[0], 'Bevollmächtigter des Erzeugers', '', 1)
                    Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV")

    hat gar nichts gebracht. Ergebnis ist immer noch gleich (schlecht). Obigen Vorschlag werde ich mal einbauen.

    Was ich aber nicht verstehe

    1.) warum soll ich '/' als Trennzeichen verwenden (sind doch Leerzeichen)

    2.) ist das Leerzeichen vor Bevollmächtigter bewußt eingesetzt, damit ich theoretisch 3 Leerzeichen vorfinde?

    Einmal editiert, zuletzt von Code4Fun (12. Dezember 2018 um 16:05)

  • Wurde ja darauf hingewiesen das ich da falsch war , sorry :|

    Wichtig ist aber schon mal du weist, das deine Strings definitiv richtig ankommen. Nun gilt es herauszufinden warum er mit dem Teilstring mit den Leerzeichen ein Problem hat.

  • Hallo Code4Fun !

    Aus Deiner Vorgehensweise :

    1. Login auf ZKS in einem Postfach, dann den Quelltext anzeigen lassen

    2. Alles markieren und kopieren, damit sich der Text in der Zwischenablage befindet

    Könntest Du den Quelltext aus der Zwischenablage mal posten (sofern keine vertraulichen Daten) ?

    Dann hätte man eine identische und vollständige Basis für die weitere Auswertung. Ggf. lässt sich der Fehler so leichter finden.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Würdet Ihr das bitte mal kontrollieren, ob ich das so richtig eingefügt habe. Ich bekomme nämlich kein OK, auch nicht, wenn ich es mit dem Erzeuger versuche

  • Ich habe ja erst an meinem Code gezweifelt aber ein Test ergab, das dieser passt.

    Ergebnis (mit Kommentaren):

    Zitat

    CBEV001488 / Bevollmächtigter des Erzeugers ;"Ur"-String

    CBEV001488 ;1. Split

    Bevollmächtigter des Erzeugers ;2.Split (mit vorangehendem Leerzeichen, dies nimmt er hier immer raus!

    OK ;Prüfung

    Daher vermute ich, das mit deinem String etwas nicht passt.

    Ich weiß nicht ob dir das hier hilft aber ich hatte mal den Fall, das ich "." anstatt " " in dem String hatte, was nur im Hexmode des Texteditors (Ultraedit) zu sehen war. Da ich nun nicht weiß wo deine Daten ursprünglich herkommen, wäre dies einen Test wert. Also mal deine Quelldatei in Hexadezimal zu öffnen und zu schauen ob die Leerzeichen auch welche sind.

    Einmal editiert, zuletzt von Moombas (13. Dezember 2018 um 14:20)

  • Ich habe den Quelltext mal in Notepad++ reinkopiert und dort dann "alle Zeichen anzeigen" aktiviert. Es erscheint zwischen / und Bevoll*** ein oranger Punkt. Wenn ich jedoch irgendwie die Leertaste drücke, wird genau dieser orange Punkt generiert. Was ich halt nicht verstehe, ist der Unterschied zwischen Scriptausführung via F5 und der kompilierten Version. Bei bekommen den gleichen Inhalt der Zwischenablage zur Verfügung gestellt, aber mit der kompilierten Version klappt es nicht.

  • Hallo Code4Fun !

    Wie ich in Beitrag #25 bereits geschrieben habe, wäre der komplette zu parsende Text aus dem Clipboard

    (also das Ergebnis von : $str = ClipGet() ; Zwischenablage abfragen ) wirklich hilfreich. Alle Deine weiteren Prüfungen finden auf Basis dieses Textes statt. Natürlich kann man sich einzelne Teile selbst bauen und testen, aber warum ?

    Andere Frage zu Deinem Thread (dann muss ich nicht zwei Beiträge schreiben) :

    Internetseite auslesen und dann?

    Konkret suche ich aktuell erst mal eine Anleitung (vielleicht mit ein paarFallbeispielen), wie ich die Internetseite aufrufen, den Login finde, dort dieAnmeldung automatisieren kann, auf das Laden der Site warte und dann nochweitere Schaltflächen anklicke um zur Ziel Site zu kommen. Gibt es da irgendwoein gutes Tutorial? Ich habe leider nichts gefunden.

    Bei allem geht es vermutlich um die Zentrale Koordinierungsstelle Abfall (ZKS-Abfall) - korrekt ?
    Sind dort solche automatisierten Logins etc. überhaupt zulässig ?

    Gruß Musashi

    P.S. Falls Dich meine Fragen nerven, dann halte ich mich zukünftig 'raus - Kurzer Hinweis genügt.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Ich kenne mich mit Notepad++ nun nicht aus aber wenn der "orangene Punkt" = ein Punkt ist, der in der normalen Textdatei ein Leerzeichen ist und in Hexadezimal ein Punkt (=verstecktes Zeichen), dann musst du bei deinem Skript nicht

    Code
    StringInStr($line3[0], 'Bevollmächtigter des Erzeugers', '', 1)

    verwenden, sondern

    Code
    StringInStr($line3[0], 'Bevollmächtigter.des.Erzeugers', '', 1)
  • Ich kenne mich mit Notepad++ nun nicht aus aber wenn der "orangene Punkt" = ein Punkt ist, der in der normalen Textdatei ein Leerzeichen ist und in Hexadezimal ein Punkt (=verstecktes Zeichen), dann musst du bei deinem Skript nicht

    Als regulärern Ausdruck würde deine Ersetzung mit Punkt funktionieren, aber bei StringInStr nicht da du hier nach einem Punkt suchst aber dein Zeichen nur als Punkt in N++ oder einem Hexeditor dargestellt wird obwohl es ein ganz anderes Zeichen ist. StringInStr akzeptiert keine Wildcards.

    Auf die schnelle kann man das ganze mit StringRegExp($line, "Bevollmächtigter.+?des.+?Erzeugers") lösen, das gibt true zurück wenn das Pattern gefunden wird.