1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. mirko2002

Beiträge von mirko2002

  • StringLower richtig einsetzen

    • mirko2002
    • 31. August 2015 um 16:21

    Hallo Community,

    helft mir mal bitte etwas auf die Sprünge.

    Ich habe einen sehr langen String. Dort sollen allerdings nur ein paar Wörter gefunden und "umgeschrieben" werden.

    Der String enthält in einem Satz zweimal eine Städtenamen, dieser wird von unseren Programmen generell in kompletter Grosschrift ausgegeben. Nun soll der Name ordentlich umgewandelt werden.

    Aus BERLIN soll z.B. Berlin werden. Dafür gibts ja die Funktion StringLower. Damit wird ja aber der kompletter gefundene String klein geschrieben. Wie aber kann ich es realisieren, dass der erste Buchstabe gross bleibt und vor allem auch im restlichen (nicht unbedingt kurzen) String sollen alle Anfangsgrossbuchestaben natürlich weiterhin gross bleiben.

    Als Beispiel:

    Der String enthält unter anderem den folgenden Satz

    Die Transportkosten für Ihre Sendung von DE-36037 FULDA nach AT-5061 SALZBURG betragen 41.79 EUR

    Die Orte varriieren jedesmal doch ist die Grosschreibweise immer gleich. Der Satz soll also nun in folgenden gewandelt werden:

    Die Transportkosten für Ihre Sendung von DE-36037 Fulda nach AT-5061 Salzburg betragen 41.79 EUR

    Mit Stringlower würde ich ja den kompletten Text klein schreiben lassen... ich denke man muss hier wieder mit StringRegExp arbeiten - aber das Ding ist mir einfach zu hoch - auch wenn ich es schon hundert Mal angeschaut habe :(

    Danke für Eure Hilfe

    LG
    Mirko

  • String nach String auslesen

    • mirko2002
    • 27. August 2015 um 12:09

    Ahjeiei... es funktioniert so... diese ganzen String-Befehle sind mir (wenn sie in den RegExp-Bereich gehen) einfach ne Nummer zu hoch :)

    Aber vielen Dank - so hab ich die Daten in einer Variable und kann damit weiterarbeiten. Wunderbar - vielen Dank für Eure Zeit :klatschen:

  • String nach String auslesen

    • mirko2002
    • 27. August 2015 um 11:48

    Sorry wenn ich Informationen "unterschlagen" habe - ich hatte gedacht, dass diese Infos ausreichend sind. Da sieht man, was man mit seinem Halbwissen anstellen kann :):):)

    Also...

    @BugFix in der Mail selbst sind 2 Daten (Datum's?) drin. Beide brauche ich... will sie in Variablen speichern damit ich mit ihnen weiter arbeiten kann.

    Die Mail sieht so aus:

    Code
    Sehr geehrte Frau XXX, 
    
    
    vielen Dank für Ihre Anfrage.
    
    
    Die Transportkosten für Ihre Sendung von DE-XXXXX BERLIN nach AT-5061 SALZBURG betragen XX.XX EUR inkl. Treibstoffzuschlag (X.XX EUR) und Mehrwertsteuer (X.XX EUR).
    
    
    Der Preis wurde anhand Ihrer folgenden Angaben berechnet: 
    Versanddatum der Berechnung: 01.07.2015
    Serviceart: XXX
    Verpackung: XXX
    Anzahl der Pakete: 1
    Abmessungen: 1 Paket mit CMxCMx (10 KG/Paket)
    Inhalt: PLASTIC PARTS
    Gesamtgewicht: 10.00 KG
    Volumengewicht: trifft nicht zu
    Transportversicherung: nein
    Versicherungswert: 0.00 EUR
    Kundennummer: XXXX 
    Rate angefragt durch: Frau XXXX / Tel: 123456789
    
    
    Bitte beachten Sie, dass bei kundeneigener Verpackung unbedingt die genauen Abmessungen verfügbar sein müssen, da sich eventuell ein Volumengewicht berechnet, das höher ist als das tatsächliche Gewicht. Bei Importen kann die angegebene Frachtrate Wechselkursschwankungen unterliegen. Der Treibstoffzuschlag wird monatlich festgelegt und kann –insbesondere wenn die Sendung erst zu einem späteren Zeitpunkt verschickt wird– differieren.
    
    
    Die Laufzeit beträgt XXX Werktage (Zustellung am 03.07.2015 18:00) sofern es keine Zollverzögerungen oder Unregelmäßigkeiten die außerhalb des Einflussbereiches von XXX liegen gibt.
    
    
    Haben Sie regelmäßigen Versand? Wünschen Sie ein individuelles Angebot? Dann kontaktieren Sie bitte Ihren persönlichen Vertriebsansprechpartner, Herrn Mustermann unter Tel.: 0123456789!
    
    
    Mit freundlichen Grüßen,
    Alles anzeigen

    Ich hab die Mail mit allen internen Daten natürlich unkenntlich gemacht, aber man sieht worauf ich hinaus will. In diesem Beispiel ist in Zeile 8 und in Zeile 23 ein Datum - beide brauche in einer eigenen Variable. Das das Datum jeweils in Zeile 8 und 23 steht, variert jedesmal da inhalte in der Mail hinzukommen oder halt entfernt sind.

    LG

  • String nach String auslesen

    • mirko2002
    • 27. August 2015 um 11:06

    Hey x0r,

    das hilft mir in der Tat nur bedingt weiter - an die zweite Möglichkeit hatte ich mich auch schon gewagt...

    Tatsächlich ist es so, das der String weitaus länger ist, als nur der Schnipsel den ich oben gepostet habe.

    Man kann es sich als eMail vorstellen:

    ....
    ....
    ....
    Kosten: XXX
    Versanddatum der Berechnung: XX.XX.XXXX
    ....
    Verpackung: XXX
    ....
    ....

    (die obigen Daten sind fiktiv... da stehen natürlich noch weit mehr drin, aber halt nach dem Schema "Begriff" : "Wert")

    Das Problem ist, dass die Daten davor oder danach immer variieren, daher kann ich nicht $str = StringMid($str, 30) arbeiten, da der gesuchte Wert ja nicht immer an der selben Stelle steht. Ich kann nur sagen, dass der Inhalt immer in dem festgelegten Satz auftaucht. Daher war meine Idee diesen Satz bzw eher das Begriff "Berechnung: " zu suchen und mir dann einfach 10 Zeichen danach auszulesen - dort würde halt immer das Datum stehen.

    Die erste Variante mit dem Doppelpunkt nützt mir auch nichts, da der gesamte String etliche Einträge mit den Doppelpunkten aufweist, aber ich will ja speziell nur diesen einen einzigen Eintrag...

  • String nach String auslesen

    • mirko2002
    • 27. August 2015 um 10:27

    Moin zusammen,

    ich Blick mal wieder in die Röhre und brauche Hilfe bei einem Thema was für Euch wahrscheinlich nur ein Kinderspiel ist.

    Ich benötige aus einem String einen bestimmten Teil.

    Der Zeile lautet wie folgt:

    Code
    Versanddatum der Berechnung: XX.XX.XXXX

    Nun probiere ich hier die ganze Zeit rum aber ich bekomme es nicht hin, dass er mir den Teil HINTER dem Doppelpunkt ausliest... :(

    Folgenden Code habe ich derzeit zum testen im Skript:


    AutoIt
    $result = StringMid($sOutput15, StringInStr($sOutput15, "Berechnung: ", 0, -1),10)		
    MsgBox(0, "Ergebnis:", $result)

    Er sucht und findet nun auch das Wort "Berechnung" und ich dachte, dass er durch den Parameter 10 am Ende nun 10 Zeichen nach meinem String sucht und diesen ausgibt. Allerdings sucht er nicht nach, sondern ab dem Wort und das ist nicht das, was ich will. Die MsgBox gibt als Wert jetzt natürlich "Berechnung" aus, aber ich will ja den Teil dahinter, der jedesmal anders ist, da es sich hier um ein Datum handelt.

    Ich hoffe das war verständlich für Euch, aber ich denke schon :)

    Gruss
    Mirko

  • Arbeitstage in einem Datumsbereich ermitteln (Bundeslandspezifisch)

    • mirko2002
    • 26. August 2015 um 09:46

    Kurois... Fehlermeldungen erhalte ich überhaupt keine. Er läuft das Script ab, ohne Ausgabe - aber auch ohne Fehler... ;(

    @x0r
    Stimmt - in der Tat so funktioniert's bei mir auch. Komisch - genauso hatte ich es auch bei mir eingetragen gehabt (mit der Msgbox) aber es ging nicht (keine Ausgabe)... Dein Copy/Paste Code klappt. Keine Ahnung ob ich evtl doch irgendwo ein kleinen Syntax-Fehler hatte - es klappt nun :)

    Danke Euch :)

  • Arbeitstage in einem Datumsbereich ermitteln (Bundeslandspezifisch)

    • mirko2002
    • 26. August 2015 um 09:12

    Dann schau doch mal bitte oben mein Codeschnipsel an - genau diese Daten habe ich doch angegeben :)

    Lediglich den $iCountWorkDays habe ich weggelassen, da der Defaultwert 5 für mich genau der richtige ist. Selbst wenn ich es mit dem Wert 5 erweiter passiert auch nichts. Nich umsonst habe ich ja deswegen meine Frage hier rein gestellt :)

  • Arbeitstage in einem Datumsbereich ermitteln (Bundeslandspezifisch)

    • mirko2002
    • 26. August 2015 um 08:30

    Ich antworte mal auf diesen doch seeeehr alten Thread - ich hoffe ich werde nicht gleich aus dem Forum geschmissen :)

    Wie verwendet bzw ruft man diese Funktion auf?


    AutoIt
    _GetWorkingDaysInRange("26.08.2015","28.08.2015",11)

    Das ganze gibt nichts aus. Wie, bzw welchen Befehl muss ich ausführen, damit Deine Funktion eine Antowrt liefert?

    Lieben Gruss

  • @Error in For-Schleife

    • mirko2002
    • 7. August 2015 um 08:56

    erledigt :)

  • @Error in For-Schleife

    • mirko2002
    • 6. August 2015 um 08:39

    Hm klar... manchmal sieht man den Wald vor lauter Bäumen nicht.

    Danke, so gehts natürlich ;)

  • @Error in For-Schleife

    • mirko2002
    • 5. August 2015 um 12:03

    Hallo zusammen,

    ich habe gerade einige Schwrierigkeiten bei meinem Tool mit der Fehlerverarbeitung bei folgendem Code-Schnipsel:

    AutoIt
    Local $dic_Variables = ObjCreate("Scripting.Dictionary")
    For $Match in StringRegExp(FileRead($sVARIABLEFILTEPATH), "(?m)^(.+?)\h*:\h*(.*?)\h*$", 4)
         $dic_Variables($Match[1]) = $Match[2]
    Next

    Wenn ich das ganze mit einem @error Aufruf erweitere, dann interessiert AutoIT das herzlich wenig - er beendet trotzdem das Skript mit einem Fehler in der Konsole, wenn die Variable kein Objekt ist.

    Wie kann ich hier eine saubere Methode einbauen, damit bei einem Fehler in der For-Schleife nicht gleich das ganze Skript beendet wird, sondern er stattdessen z.B. eine MsgBox aufruft und aus dem Loop geht (ExitLoop)?

    LG

  • Viele StringReplace über ein und dasselbe Inputfenster laufen lassen

    • mirko2002
    • 4. August 2015 um 14:26
    Zitat von AspirinJunkie

    Das ist ein sogenannter regulärer Ausdruck. Ein sehr mächtiges Werkzeug um Strings anhand von Abfolgemustern zu zerlegen/zu prüfen oder zu verändern.
    Der Haken: Sich da einzuarbeiten benötigt bisschen Zeit - lohnt sich aber. (Ein Tutorial hierzu findest du z.B. hier).

    Ansonsten geht es auch mit anderen Funktionen.
    Für das Beispiel könnte man z.B. _StringBetween verwenden:

    AutoIt
    $a = _StringBetween($s_VariableFile, "Net Rate ", "€")
    ConsoleWrite($a[0] & @CRLF)


    Im ersten Beispiel wird der Inhalt der Variablendatei direkt ausgelesen ohne sie erst in eine Variable zu speichern.
    Da du jetzt mehrere Abfragen darauf machst solltest du noch das FileRead raus nehmen und das Ergebnis in eine Variable packen.

    Ich stech (nach wie vor :rofl: ) auf dem Schlauch....

    Monaten habe ich den Code soweit umgeschrieben zum testen:


    AutoIt
    Global $sVARIABLEFILTEPATH = "Variables.txt"
    Global $sTEXTFILTEPATH = "Ausgabe.txt"
    
    
    ; Variablen einlesen und (zur besseren Handhabbarkeit in einem Dictionary speichern)
    Global $dic_Variables = ObjCreate("Scripting.Dictionary")
    For $Match in StringRegExp(FileRead($sVARIABLEFILTEPATH), "(?m)^(.+?)\h*:\h*(.*?)\h*$", 4)
    	$dic_Variables($Match[1]) = $Match[2]
    Next
    
    
    ; Textvorlage einlesen:
    Global $s_TextTemplate = FileRead($sTEXTFILTEPATH)
    
    
    ; Variablen in Textvorlage ersetzen:
    For $s_Term in StringRegExp($s_TextTemplate, '%([^%]+)%', 3)
    	If $dic_Variables.Exists($s_Term) Then $s_TextTemplate = StringReplace($s_TextTemplate, "%" & $s_Term & '%', $dic_Variables($s_Term), 0, 1)
    Next
    
    
    ;Datum & Begriffe umwandeln umwandeln
    $sOutput = StringRegExpReplace($s_TextTemplate, '(\d{2})/(\d{2})/(\d{4})', '$2.$1.$3')
    $sOutput1 = StringReplace ($sOutput, "INTERNATIONAL_ECONOMY(4)", "International Economy", 0, 1)
    $sOutput2 = StringReplace ($sOutput1, "INTERNATIONAL_PRIORITY(1)", "International Priority", 0, 1)
    $sOutput3 = StringReplace ($sOutput2, "INTERNATIONAL_PRIORITY_FIRST(6)", "International Priority First", 0, 1)
    $sOutput4 = StringReplace ($sOutput3, "FRI", "", 0, 1)
    
    
    ; Ergebnis ausgeben lassen:
    ConsoleWrite($sOutput4 & @CRLF)
    Alles anzeigen

    Mit Deinem Beispiel StringBetween komm ich gerade überhaupt nicht zurecht :(

    LG
    Mirko

  • Viele StringReplace über ein und dasselbe Inputfenster laufen lassen

    • mirko2002
    • 4. August 2015 um 13:33

    Ok super, Datum konnte ich schon konvertieren lassen mit dem Tipp, auch die Serviceart wird durch ein extra Replace vor der Ausgabe konvertiert.

    Nun hab ich aber noch das Problem, sobald bestimmte Begriffe die ich suche, nicht mit Doppelpunkt enden, findet er sie natürlich nicht.

    Als Beispiel:

    Service Type: INTERNATIONAL_ECONOMY - findet er
    Net Rate 90€ - findet er nicht

    Soweit ich es gesehen habe wird das ja über diese Zeile realisiert:

    AutoIt
    For $Match in StringRegExp(FileRead($sVARIABLEFILTEPATH), "(?m)^(.+?)\h*:\h*(.*?)\h*$", 4)

    Wie müsste diese Zeile lauten, damit ich auch Begriffe wie dieses "Net Rate" oder ähnliches suchen kann?

    Das ganze ist nicht sooo einfach wie ich es mir "erhofft" hatte :(


    Edit:

    Müsste ich die Zeile dann doppelt eintragen mit dem Inhalt?:

    AutoIt
    For $Match in StringRegExp(FileRead($sVARIABLEFILTEPATH), "(?m)^(.+?)\h*(.*?)\h*$", 4)
  • Viele StringReplace über ein und dasselbe Inputfenster laufen lassen

    • mirko2002
    • 4. August 2015 um 12:56

    Ja genau vor dem Problem stehe ich nämlich gerade... probiere mich gerade an Deinem Beispiel etwas rum und ich muss unter anderem das von dir angesprochene Datum konvertieren und auch aus den Begriffen wie INTERNATIONAL_ECONOMY(4) muss ja ein "International Economy" draus werden. Also die Zielmails sind alle gleich. Nur "ein paar" Variablen ändern sich immer und darum geht es. Rauszufionden welche Variablen gerade da sind für die Mail und diese einzusetzen/ersetzen.

  • Viele StringReplace über ein und dasselbe Inputfenster laufen lassen

    • mirko2002
    • 4. August 2015 um 12:30

    Ok ja in der Tat, jetzt funktioniert das Beispiel.

    Ich bin grad durch die Hitze etwas überfordert (unklimatisiertes Büro hier :( )

    Das Beispiel verstehe ich - lässt es sich soweit auf folgendes Scenario übertragen?


    Also hier nochmal kurz in beidem zusammen der Roh-Text und der Ziel-Text der daraus erstellt werden muss:

    Rohtext:

    Spoiler anzeigen


    Detailed Commit: FRI 07/03/2015 18:00
    Bill To: S
    Term: P
    Rate for Account Nbr: 123456789 - FXE
    Interline Account:
    Ship Date: 07/01/2015
    Device Type: Air Waybill
    Origin Country: DE
    Origin Postal Code: 36037
    Origin St/Prov: HE
    Origin City: FULDA
    Origin Service Area: PM
    Origin OPCO: FXE
    Origin LOC Id: ZOQF
    Destination Country: AT
    Destination Postal Code: 5061
    Destination St/Prov: SB
    Destination City: SALZBURG
    Destination Service Area:
    Destination OPCO: FXE
    Destination LOC Id: SZGA
    Rate Zone: DE001O
    Number of Packages: 1
    Total Package Weight: 10.00 KG
    Customs Value: 1
    Customs Val. Currency Cd: EUR
    FedEx Service Type: INTERNATIONAL_ECONOMY(4)
    Received At Code: Pick-up
    Commodity: PLASTIC PARTS
    Documentation: INTERNATIONAL_AIRWAY_BILL, COMMERCIAL_INVOICE
    Rate Currency Cd: EUR

    Line: #Pcs: Each: Weight: L: W: H: Packaging: Special Handling:
    1 1 false 10.00 KG CM CM CM YOUR_PACKAGING(1)

    Details:
    Description Amount/InformationDiscount/Surcharge %

    Full Rate
    FREIGHT 31.50 EUR

    Net Rate 41.79

    Additional Charges:
    On call pickup 0.00
    Fuel Surcharge-11.5% 3.62
    Germany value-added 6.67


    Additional Information:
    Dimensional Weight Applied Not Applied
    OneRate - Applied Not Applied
    Dimensional Weight Applied Not Applied
    Pick Up
    Customs on Fixed Fuel Program? No
    Rate Type Actual
    Deficit Weight

    Rated as 10.0 KG

    Ziel-Text:

    Spoiler anzeigen


    Sehr geehrter Herr Test,

    vielen Dank für Ihre Anfrage.

    Die Transportkosten für Ihre Sendung von DE-36037 FULDA nach AT-5061 SALZBURG betragen 41.79 EUR inkl. Treibstoffzuschlag (3.62 EUR) und Mehrwertsteuer (6.67 EUR).

    Der Preis wurde anhand Ihrer folgenden Angaben berechnet:
    Versanddatum der Berechnung: 01.07.2015
    Serviceart: International Economy
    Verpackung: eigene
    Anzahl der Pakete: 1
    Abmessungen: 1 Paket mit CMxCMx (10 KG/Paket)
    Inhalt: PLASTIC PARTS
    Gesamtgewicht: 10 KG
    Volumengewicht: trifft nicht zu
    Transportversicherung: nein
    Versicherungswert: 0.00 EUR
    FedEx Kundennummer: 123456789 / Business
    Rate angefragt durch: Herr Test/ Tel: 030 666 666 666

    Bitte beachten Sie, dass bei kundeneigener Verpackung unbedingt die genauen Abmessungen verfügbar sein müssen, da sich eventuell ein Volumengewicht berechnet, das höher ist als das tatsächliche Gewicht. Bei Importen kann die angegebene Frachtrate Wechselkursschwankungen unterliegen. Der Treibstoffzuschlag wird monatlich festgelegt und kann –insbesondere wenn die Sendung erst zu einem späteren Zeitpunkt verschickt wird– differieren.

    Die Laufzeit beträgt 2 Werktage (Zustellung am 03.07.2015) sofern es keine Zollverzögerungen oder Unregelmäßigkeiten die außerhalb des Einflussbereiches von FedEx liegen gibt.

    Haben Sie regelmäßigen Versand? Wünschen Sie ein individuelles Angebot? Dann kontaktieren Sie bitte Ihren persönlichen Vertriebsansprechpartner, Herrn Mustermann unter Tel.: 0123456789!

    Mit freundlichen Grüßen

    Lässt sich so ein Text 1:1 umsetzen? Die Sätze im Zieltext sind auch immer Variabel. Der erste Satz im Beispiel lautet ja:

    Die Transportkosten für Ihre Sendung von DE-36037 FULDA nach AT-5061 SALZBURG betragen 41.79 EUR inkl. Treibstoffzuschlag (3.62 EUR) und Mehrwertsteuer (6.67 EUR).

    Dieser Satz ist Variabel. Es kann sein, dass mal die Mehrwertsteuer wegfällt, oder aber auch auf einmal ein Gefahrgutzuschlag auftaucht.

    Die Hitze macht mich grad echt fertig und ich bin zum denken nicht zu gebrauchen :(

  • Viele StringReplace über ein und dasselbe Inputfenster laufen lassen

    • mirko2002
    • 4. August 2015 um 11:24

    Hm Dein Beispiel endet bei mir nur in etlichen Fehlercodes:


    Zitat

    >Running AU3Check (3.3.12.0) from:C:\Program Files\AutoIt3 input:C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(6,59) : error: syntax error (illegal character)
    For $Match in StringRegExp(FileRead($sVARIABLEFILTEPATH), '
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(6,67) : error: syntax error
    For $Match in StringRegExp(FileRead($sVARIABLEFILTEPATH), '(?m)^(.+
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(6,75) : error: unbalanced paranthesis expression. (illegal character)
    For $Match in StringRegExp(FileRead($sVARIABLEFILTEPATH), '(?m)^(.+?)\h*:\h
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(6,79) : error: syntax error
    For $Match in StringRegExp(FileRead($sVARIABLEFILTEPATH), '(?m)^(.+?)\h*:\h*(.*
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(7,26) : error: syntax error (illegal character)
    $dic_Variables($Match[1])
    ~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(7,39) : error: syntax error
    $dic_Variables($Match[1]) = $Match[2]
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(11,51) : error: syntax error
    Global $s_TextTemplate = FileRead($sTEXTFILTEPATH)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(15,34) : warning: $s_Term: possibly used before declaration.
    If $dic_Variables.Exists($s_Term)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(15,36) : error: syntax error
    If $dic_Variables.Exists($s_Term) Then
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(15,88) : warning: $s_TextTemplate: possibly used before declaration.
    If $dic_Variables.Exists($s_Term) Then $s_TextTemplate = StringReplace($s_TextTemplate,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(15,141) : error: syntax error
    If $dic_Variables.Exists($s_Term) Then $s_TextTemplate = StringReplace($s_TextTemplate, "%" & $s_Term & '%', $dic_Variables($s_Term), 0, 1)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(15,34) : error: $s_Term: undeclared global variable.
    If $dic_Variables.Exists($s_Term)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(15,88) : error: $s_TextTemplate: undeclared global variable.
    If $dic_Variables.Exists($s_Term) Then $s_TextTemplate = StringReplace($s_TextTemplate,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3"(6,63) : error: m(): undefined function.
    For $Match in StringRegExp(FileRead($sVARIABLEFILTEPATH), '(?m)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Users\751076\Desktop\AutoIT Tools\AxelOne\test.au3 - 12 error(s), 2 warning(s)
    !>11:22:38 AU3Check ended. Press F4 to jump to next error.rc:2
    +>11:22:38 AutoIt3Wrapper Finished.
    >Exit code: 2 Time: 0.4879

    Alles anzeigen
  • Viele StringReplace über ein und dasselbe Inputfenster laufen lassen

    • mirko2002
    • 4. August 2015 um 10:00

    Hallo Andy,

    also hier mal ein Text wie er aus einem unserer Programme rauskopiert wird. Daraus wird unserem Kunden ein Preisangebot per Mail erstellt. Einige Dinge habe ich gegen Dummywerte ausgetauscht, aus Datenschutzgründen (da Kundendaten).

    So sieht die Rohdatei aus:

    Spoiler anzeigen


    Detailed Commit: FRI 08/07/2015 20:00
    Bill To: S
    Term: P
    Rate for Account Nbr: 123456789
    Interline Account:
    Ship Date: 07/30/2015
    Device Type: Air Waybill
    Origin Country: DE
    Origin Postal Code: 29525
    Origin St/Prov: NS
    Origin City: UELZEN
    Origin Service Area: H2
    Origin OPCO: ABC
    Origin LOC Id: FRART
    Destination Country: ES
    Destination Postal Code: 08360 (08360)
    Destination St/Prov:
    Destination City: CANET DE MAR
    Destination Service Area: H2
    Destination OPCO: ABC
    Destination LOC Id: BCNRT
    Rate Zone: DE001O
    Number of Packages: 1
    Total Package Weight: 60.00 KG
    Customs Value: 1
    Customs Val. Currency Cd: EUR
    Service Type: INTERNATIONAL_ECONOMY_FREIGHT(86)
    Received At Code: Pick-up
    Commodity: MACHINERY, ELEC.
    Documentation: INTERNATIONAL_AIRWAY_BILL, COMMERCIAL_INVOICE
    Rate Currency Cd: EUR

    Line: #Pcs: Each: Weight: L: W: H: Packaging: Special Handling:
    1 1 false 60.00 KG 200 CM 40 CM 40 CM YOUR_PACKAGING(1)

    Details:
    Description Amount/InformationDiscount/Surcharge %
    Full Rate
    FREIGHT 244.80 EUR
    Net Rate 326.27
    Additional Charges:
    On call pickup 0.00
    Fuel Surcharge-12.0% 29.38
    Germany value-added 52.09
    Additional Information:
    Dimensional Weight Applied Not Applied
    OneRate - Applied Not Applied
    Dimensional Weight Applied Not Applied
    Pick Up
    Customs on Fixed Fuel Program? No
    Rate Type HW Actual
    Deficit Weight
    Rated as 68.0 KG

    Daraus wird bei uns über tausend Umwege ne ordentliche Mail generiert ala:

    Zitat

    Sehr geehrte Damen und Herren,


    wie gewünscht heir Ihr Preisangebot:

    ...
    ....
    ...

    Mit freundlichen Grüssen


    Und so weiter und so fort. Aus dem Roh-Kauderwelsch, muss also was ordentliches her. Entweder müssen Abkürzungen oder ganze Teile aus dem Rohformat gegen was "ordentliches" getauscht werden. Da stosse ich mit meinen Kentnissen an meine Grenze und weiss nicht mehr weiter. StringReplace hat mit meinem Wissen mir nur begrenzt geholfen :(

    Das mit der Anrede auswählen ist bewusst so gemacht, da bei einer Vorauswahl es passieren kann, dass der Mitarbeiter den "Punkt" übersieht und dann die falsche Anrede drin lässt, die als Default gewählt wurde. So ist es mir lieber, da der Mitarbeiter gezwungen ist eine Anrede auszuwählen, wenn er es übersieht.

    Gruss
    Mirko

  • Viele StringReplace über ein und dasselbe Inputfenster laufen lassen

    • mirko2002
    • 3. August 2015 um 18:14

    Moin AutoIT'ler,

    ich versuche momentan ein Tool für unsere Mitarbeiter zu entwickeln, was einen Quelltext ausliest und dort bestimmte Begriffe austauscht und in einem neuen Fenster als Zieltext ausgibt.

    Momentan ist es so, das ich nach jedem StringReplace die Box mit GUICtrlRead wieder neu auslese, wieder den weiteren Begriff suche und wieder ersetze. Bei z.B. 30 Begriffen die gesucht und evtl ersetzt werden müssen wären das mit meiner "Noob"-Variante ja unmengen an Code.

    Dass muss doch auch besser gehen.

    Ich poste hier mal das testskript:

    Spoiler anzeigen
    AutoIt
    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=
    #AutoIt3Wrapper_Outfile=
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #Include <GuiEdit.au3>
    #include <Misc.au3>
    #include <WindowsConstants.au3>
    #include <StructureConstants.au3>
    #include <ComboConstants.au3>
    
    
    ;#########################################
    
    
    Global $version = "1.00"
    
    
    ;#########################################
    
    
    $WinTitle = " Test" & $version & "     © me"
    $GUI = GUICreate($WinTitle, 500, 230)
    
    
    GUICtrlCreateGroup("INPUT:  ", 12, 0, 475, 192)
    GUICtrlSetFont(-1, 8, 800, 0, "Verdana")
    
    
    $combo_anrede = GUICtrlCreateCombo("Anrede auswählen:", 20, 15, 177, -1, $CBS_DROPDOWNLIST)
    GUICtrlSetData(-1,"Sehr geehrter Herr |Sehr geehrte Frau |Sehr geehrte Damen und Herren", "")
    $input_anrede = GUICtrlCreateInput("", 200, 15, 100, 20)
    GUICtrlSetState($input_anrede,$GUI_HIDE)
    
    
    $input = GUICtrlCreateEdit ("", 20, 50, 457, 120, BitOR ($WS_VSCROLL, $ES_MULTILINE, $ES_AUTOVSCROLL, $ES_WANTRETURN))
    
    
    $button_input = GUICtrlCreateButton("Los Pikachu!!!", 120, 200, 90, 17)
    
    
    $GUI_OUTPUT = GUICreate("AUSGABE", 500, 230)
    GUICtrlCreateGroup("OUTPUT:  ", 12, 0, 475, 192)
    GUICtrlSetFont(-1, 8, 800, 0, "Verdana")
    $output = GUICtrlCreateEdit ("", 20, 15, 457, 170, BitOR ($WS_VSCROLL, $ES_MULTILINE, $ES_AUTOVSCROLL, $ES_WANTRETURN))
    $button_output = GUICtrlCreateButton("OK", 120, 200, 90, 17)
    
    
    $signature = "[Agent_Name]" & @CRLF & "Customer Technology Service" & @CRLF & "Test Europe, Middle East, Indian Subcontinent & Africa "
    
    
    GUISetState(@SW_SHOW, $GUI)
    
    
    While 1 * Sleep(50)
    
    
    $read_anrede = GUICtrlRead($combo_anrede)
    If $read_anrede = "Sehr geehrter Herr " Then
    	GUICtrlSetState($input_anrede,$GUI_SHOW)
    ElseIf $read_anrede = "Sehr geehrte Frau " Then
    	GUICtrlSetState($input_anrede,$GUI_SHOW)
    Else
    	GUICtrlSetState($input_anrede,$GUI_HIDE)
    EndIf
    
    
    $msg = GUIGetMsg(1)
        Switch $msg[1]
    		Case $GUI
    			Switch $msg[0]
    				Case $button_input
    					; hier wird der Input ausgelesen
    					$read_anrede = GUICtrlRead($combo_anrede)
    					$read_input_anrede = GUICtrlRead($input_anrede)
    					$read_input = GUICtrlRead($input)
    						If $read_anrede = "Sehr geehrter Herr " OR $read_anrede = "Sehr geehrte Frau " Then
    							If $read_input_anrede = "" Then
    								MsgBox(0,"ALERT","Kein Ansprechpartner ausgewählt!")
    							Else
    								GUISetState(@SW_SHOW, $GUI_OUTPUT)
    								GUISetState(@SW_HIDE, $GUI)
    								GUICtrlSetData($output, $read_anrede & $read_input_anrede & "," & @CRLF & @CRLF & $read_input & @CRLF & @CRLF & $signature)
    								$read_input1 = GUICtrlRead($input)
    								$replace1 = StringReplace ($read_input1, "IP", "International Priority", 0, 1)
    								GUICtrlSetData($output, $read_anrede & $read_input_anrede & "," & @CRLF & @CRLF & $replace1 & @CRLF & @CRLF & $signature)
    								$read_input2 = GUICtrlRead($output)
    								$replace2 = StringReplace ($read_input2, "IE", "International Economy", 0, 1)
    								GUICtrlSetData($output, $replace2)
    								$read_input3 = GUICtrlRead($output)
    								$replace3 = StringReplace ($read_input3, "IEF", "International Economy Freight", 0, 1)
    								GUICtrlSetData($output, $replace3)
    								$read_input4 = GUICtrlRead($output)
    								$replace4 = StringReplace ($read_input4, "IPF", "International Priority Freight", 0, 1)
    								GUICtrlSetData($output, $replace4)
    							EndIf
    						ElseIf $read_anrede = "Sehr geehrte Damen und Herren" Then
    							GUICtrlSetData($input_anrede, "")
    							GUISetState(@SW_SHOW, $GUI_OUTPUT)
    							GUISetState(@SW_HIDE, $GUI)
    							$read_input1 = GUICtrlRead($input)
    							$replace1 = StringReplace ($read_input1, "IP", "International Priority", 0, 1)
    							GUICtrlSetData($output, $read_anrede & "," & @CRLF & @CRLF & $replace1 & @CRLF & @CRLF & $signature)
    							$read_input2 = GUICtrlRead($output)
    							$replace2 = StringReplace ($read_input2, "IE", "International Economy", 0, 1)
    							GUICtrlSetData($output, $replace2)
    							$read_input3 = GUICtrlRead($output)
    							$replace3 = StringReplace ($read_input3, "IEF", "International Economy Freight", 0, 1)
    							GUICtrlSetData($output, $replace3)
    							$read_input4 = GUICtrlRead($output)
    							$replace4 = StringReplace ($read_input4, "IPF", "International Priority Freight", 0, 1)
    							GUICtrlSetData($output, $replace4)
    						ElseIf $read_anrede = "Anrede auswählen:" Then
    							MsgBox(0,"ALERT","Keine Anrede ausgewählt!")
    						EndIf
    				Case $GUI_EVENT_CLOSE
    					Exit
    			EndSwitch
    		Case $GUI_OUTPUT
    			Switch $msg[0]
    				Case $GUI_EVENT_CLOSE
    					GUISetState(@SW_SHOW, $GUI)
    					GUISetState(@SW_HIDE, $GUI_OUTPUT)
    				Case $button_output
    					GUISetState(@SW_SHOW, $GUI)
    					GUISetState(@SW_HIDE, $GUI_OUTPUT)
    			EndSwitch
    	EndSwitch
    WEnd
    Alles anzeigen

    Im Text sollen also Begriff wie IP, IE, IPF, IEF und so weiter und so fort, gesucht und ersetzt werden. Also die Abkürzungen zum Beispiel sollen die vollständigen Wörter ausgeben. Bisher sieht man ja, dass ich jedesmal nach einem Replace die Box neu auslesen lasse...

    Das muss doch auch anders gehen...?

    LG
    Mirko

  • _IEAction auf ObjID geht nicht

    • mirko2002
    • 23. August 2014 um 11:11

    Hm... hab mir beides mal genau durchgelesen. Beide nicht brauchbar... bei denen gehts drum gar nicht erst die ID oder ähnliches zu finden.

    Das ist bei mir nicht das Problem, denn mit $oDiv1 = _IEGetObjById($oIE, "TabPanel1__TabShifts") wird die ID ja auch gefunden. Lediglich der Click darauf reagiert nicht und das wird bei diesen beiden Threads leider nicht bearbeitet :(

  • _IEAction auf ObjID geht nicht

    • mirko2002
    • 22. August 2014 um 13:19

    Eben probiert... man sieht zwar, wenn ich die Tabtaste durchdrücke, das er den Tab "umrandet" aber ich kann da Enter oder Space oder sontwas drücken - er nimmts nicht. Dadrunter ist ein Inputfeld mit Button, wenn ich den Button mit Tab ansteuer und Enter drücke gehts... nur die Tabs oben sind echt ne Hausnummer....

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™