• Ersetzt in einem String Makros, Variablen und Funktionen durch ihre (Rückgabe-)Werte.

    [autoit]

    Func EvalString($s, $n=10)
    Local $v, $i
    $v = StringRegExp($s, "([@$][A-Za-z_0-9]+|[A-Za-z_0-9]+\(.*?\))", 3)
    If @error Then Return $s
    For $i = 0 To UBound($v)-1
    $s = StringReplace($s, $v[$i], Execute($v[$i]))
    Next
    If ($n > 0) Then $s = EvalString($s, $n-1)
    Return $s
    EndFunc

    [/autoit]

    Verwendung:
    - für Logdateien
    - um Funktionsaufrufe und ähnliches so richtig schön unleserlich zu machen... :D

    Nachteile:
    - Alle verwendeten Variablen müssen Global sein.

    Beispiel:

    [autoit]

    MsgBox(0, "", EvalString("Es ist @HOUR:@MIN Uhr. Der zur Zeit angemeldete Benutzer heißt @UserName."))

    [/autoit]

    MfG, James

  • Cool, wieder was gelernt. Aber zum Glück funktioniert das nicht mit Funktionen, sonst wäre EvalString völlig sinnlos. :D
    Edit: Und man kann bei ExpandVarStrings keine Variablen/Makros/Funktionen ineinanderschachteln...