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

    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


    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:

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


    MfG, James

  • Opt ('ExpandVarStrings', 1)
    MsgBox (0, '', 'Es ist @HOUR@:@MIN@ Uhr. Der zur Zeit angemeldete Benutzer heißt @UserName@.')

    :D

  • 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...