REGEXP und Pattern

  • Hallo Zusammen,

    ich brauche nochmal eure kompetente Hilfe. Ich möchte aus einer Anwendung heraus Kundedaten kopieren. das Problem ist, dass ich die Datenfelder nicht direkt ansprechen kann, sondern über copy und paste die Daten in ein Notepat sende. Das klappt auch soweit. Jetzt will ich aber if Anwendungen einbauen, die das Notepad nach bestimmten Kriterien durchsucht und mir dann den Wert anzeigt.
    Wie kann ich mir sowas basteln, dass wenn ich in den Auftragsdaten den Wert z.B. Fliesen finde, der dieser mir direkt die ganze Line anzeigt bzw. die Werte die darin enthalten sind.

    Name: Müller Norbert
    Adresse: Engelsholt 140
    Ort: Aachen
    Telefonnummer: 110


    Bestellungen

    Holz

    Fliesen, 2qm Mosaik, 2qm Naturstein

    Laminat, 10qm Nußbaum

    Das ist der Eintrag aus Notepad Datei , 2 tes Porb für mich ist, dass die Daten immer unterschiedlich auseinader stehen?
    Mir wurde gesagt, dass kann ich mir REGEXP und Pattern machen. Aber wie soll ich das nach 2 Tagen Auto IT hinbekommen?

  • Geht auch ohne RegExp, erst splitten und dann in ner For-Schleife durchsuchen:

    [autoit]

    #include <Array.au3>

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

    $string = "Name: Müller Norbert"&@CRLF&"Adresse: Engelsholt 140"&@CRLF&"Ort: Aachen"&@CRLF&"Telefonnummer: 110"&@CRLF&"Bestellungen"&@CRLF&"Holz"&@CRLF&"Fliesen, 2qm Mosaik, 2qm Naturstein"&@CRLF&"Laminat, 10qm Nußbaum"

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

    $ar = StringSplit($string, @CRLF)

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

    ;_ArrayDisplay($ar)

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

    For $i = 1 To $ar[0]
    If StringInStr($ar[$i], "Fliesen") Then MsgBox(0, "String gefunden!", $ar[$i])
    Next

    [/autoit]
  • Aber ich muss die Daten aus dem Notepad, dann irgendwie in den String bekommen, oder? Besser wäre es noch, wenn ich diese in einem Input Feld angezeigt bekommen. Will eine Gui basteln, die mir dann den aktuellen Bestellwert in die Inputfelder setzt und ich nur noch auf Richtig klicken muss, oder flasch um dann die Daten zu überschreiben

  • Füg die Daten statt ins notepad einfach in ein Edit-Element (GUICtrlCreateEdit) ein ;)

    • Offizieller Beitrag

    das Problem ist, dass ich die Datenfelder nicht direkt ansprechen kann


    Einspruch Euer Ehren :D - Bis jetzt haben wir noch jeden Zugang zu einer Datenbank gefunden. Evtl. muß etwas am Format gefeilt werden, aber eine direkte Abfrage sollte machbar sein.
    Welche DB wird verwendet? Hast du administrativen Zugang (User, PW). Zugang vom Client oder auf dem Server?

    Bei meiner DB benutze ich den kleinen Umweg, Daten per SQL-Abfrage zusammenzustellen und das Ergebnis in eine Datei zu exportieren (Format wählbar: z.B. xls, csv). Diese verwende ich dann mit AutoIt.

  • Sorry, keine Ahnung. Soweit bin ich noch nicht. mir würde die Variant mit Notepad schon ausreichen.
    Ich möcht das die Inpubutton automatisch mit den Informationen aus Notebad vorbelegt sind und ich dann nur auf Richtig oder Falsch tippen muss.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form3 = GUICreate("Form3", 413, 298, 435, 226)
    GUICtrlCreateInput("", 24, 128, 121, 21)
    $GUI_Datenubernahme = GUICtrlCreateButton("Richtig", 56, 176, 75, 25, $WS_GROUP)
    GUICtrlCreateInput("", 200, 128, 121, 21)
    $RLS = GUICtrlCreateLabel("Holz", 32, 104, 32, 23)
    GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
    $Label1 = GUICtrlCreateLabel("Laminat", 235, 105, 52, 23)
    GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
    GUICtrlCreateInput("", 123, 69, 121, 21)
    $Label2 = GUICtrlCreateLabel("Fliesen", 164, 48, 46, 23)
    GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
    $Button1 = GUICtrlCreateButton("Falsch", 215, 178, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $GUI_Datenubernahme
    Case $Button1
    EndSwitch
    WEnd

    [/autoit]


    Wie muss ich vorgehen?

    Edit BugFix: Tags gesetzt

    Einmal editiert, zuletzt von BugFix (22. März 2010 um 21:51)

  • Ganz billig würde es so gehen.
    Für vernünftige RegExp braucht man aber mehr als eine Datei. Außerdem Reicht 1 Inputfeld eher nicht.
    Ich würde die Einzelnen Elemente (2qm Graue fliesen, 2qm rote Fliesen) in Listbox Items einlesen. Dann hat man alles direkt im Blick.

    [autoit]

    GUICtrlCreateList

    [/autoit]

    Und für StringRegExp hab ich mal ein Tutorial (siehe Signatur)
    Das ist aber etwas härterer Tobak und nichts, was man an einem Nachmittag perfekt lernt.