Problem mit StringRegExpReplace()

  • Ich grüße in meinem ersten thread hier zuallererst mal die AutoIt-Gemeinde!

    Nun aber zu meinem Problem:

    Ich habe aus einer .txt-Datei einen String ausgelesen
    $String = String(FileRead(Text.txt))

    Dieser enthält unter anderem folgenden Text:

    M99
    /M99

    Nun wollte ich je nach Vorkommen des jeweiligen Elements an "M99" ein "%" anhängen und falls "/M99" drin steht, möchte ich den String an dieser Stelle eben nicht verändern.
    Also habe ich mal die Hilfedatei bemüht und bin auf die Funktion StringRegExpReplace() gestoßen, nur leider komme ich mit dem Syntax dieser Funktion bzw. der Pattern absolut nicht klar.
    So habe ich mich nun hier angemeldet und hoffe auf Hilfe.

    [autoit]

    $String = StringRegExpReplace($String, "M99" , "M99"&@CRLF&"%")

    [/autoit]

    Nur ersetzt mir das auch die String-Abschnitte, in denen /M99 steht.

    MfG

    Einmal editiert, zuletzt von Huberhans (2. Juli 2010 um 19:36) aus folgendem Grund: Problem gelöst

  • Noch kurz zur Info, worum's überhaupt geht:
    Ich bin Programmierer für CNC-Maschinen. Wenn ich von der Steuerung die Maschinenprogramme sichern will, setzt mein Übertragungsprogramm diese aneinandergereiht in eine einzige .txt-Datei, womit ich allerdings nicht sonderlich viel anfangen kann. Bisweilen muß ich aus der Sicherungsdatei jedes einzelne Programm manuell ausschneiden und in ner separaten Textdatei abspeichern, was nervig und zeitaufwändig ist.
    Nun hab ich mit AutoIt mal was gescriptet, das mir diese Arbeit abnimmt. Vorgehensweise wie folgt:
    String aus Textdatei auslesen
    Trennzeichen einfügen nach M99 / M30 (Programmende)
    Per StringSplit aufteilen und nacheinander abspeichern - Dateiname wird per StringInStr aus dem Kommentar ausgelesen.

    M30 definiert ein Hauptprogramm, M99 ein Unterprogramm.
    Die Steuerung geht dann mit den Programmen nur anders um. Nun habe ich halt teilweise Programme, die mal als Unter- und mal als Hauptprogramme fungieren und per Kippschalter an der Maschine kann ich den BlockSkip (/) ein- und ausschalten, wodurch die Programme dann so aussehen:

    Code
    Programmcode
     
    /M99
    M30

    Problemlos funktioniert mein Script, wenn entweder:

    Code
    Programmcode
    M99


    oder

    Code
    Programmcode
    M30


    drinsteht.

    Ach ja, als Ergebnis brauch ich nach dem M30 bzw. M99 ein %-Zeichen