Hi Com,
aufgrund von Nachfragen, eigenen Interessen und Langeweile habe ich mal einen Mix aus UDF und How-To über Parameter und Return Values mit Adlib-Funktionen gemacht.
Dies geschiet doch die doch sehr praktischen Funktionen EnvSet und EnvGet. (Endlich habe ich mal einen Sinn für diese Funktionen entdeckt)
Das Prinzip ist einfach zu verstehen, es werden Variablen in der Umgebung festgelegt und in der Adlib-Funktion bzw. eine "Return Value" irgentwo ausgelesen. (EnvGet)
Hier nun das Beispiel mit Funktion:
Parameter / Return Values mit Adlib-Funktionen
; *** Beispiel für Parameter und Return Values in Adlib-Funktionen ***
; ===<<< >>>=== ===<<< >>>=== ===<<< >>>=== ===<<< >>>=== ===<<< >>>===
_Adlibregister("_MyAdLibWithParams", "Text - Hier können Buchstaben" & @CRLF & @Tab & "ausgelesen werden, ebenfalls" & @CRLF & @Tab & "Text mit Makros!", True, 255)
While 1
If EnvGet("$IfReadyToExit") Then ExitLoop ; Wenn die "Return Value" True gesetzt wurde...
WEnd
Func _AdlibRegister($sFunction, $sParam, $vParam, $iParam, $iTime = 500)
EnvSet("$sParam", $sParam)
EnvSet("$vParam", $vParam)
EnvSet("$iParam", $iParam) ; Parameter aus der Definition in eine Umgebungsvariable setzen
AdlibRegister($sFunction, $iTime)
EndFunc
Func _MyAdLibWithParams()
Local $sParamGet = EnvGet("$sParam"), $vParamGet = EnvGet("$vParam"), $iParamGet = EnvGet("$iParam") ; Parameter aus der Umgebung auslesen
MsgBox(64, "_MyAdLibWithParams", "String: " & $sParamGet & @CRLF _
& "Status: " & $vParamGet & @CRLF _
& "Integer: " & $iParamGet & @CRLF _
& "Das sind Parameter in einer Adlib-Funktion, die im Hintergrund läuft!")
ConsoleWrite($sParamGet & @CRLF & $vParamGet & @CRLF & $iParamGet & @CRLF)
AdlibUnregister("_MyAdLibWithParams") ; Muss nicht unbedingt...
EnvSet("$IfReadyToExit", True) ; Eine Art Returnvalue zur Adlib-Funktion
EndFunc
Man kann es auch mit Globalen machen, allerdings muss man bei der Variante vorher Globale deklarieren, das ist bei meiner Version nicht nötig, somit ist das wohl die elegantere Lösung.
Wenn irgentetwas unklar ist, bitte einfach fragen, ich versuche, es gut möglichst zu erklären.