Hallo zusammen,
heute habe ich eine etwas ungewöhnliche Frage: Ich möchte auf eine Variable zugreifen, die manchmal da ist und manchmal nicht...
Also das Problem ist folgedes: Ich habe eine normale Lotus-Script-Funktion, eventuell in einer Klasse, kann aber auch Standalone sein. Diese Funktion ist in einer Bibliothek hinterlegt und kann normal benutzt werden. Unter gewissen Umständen wird die Funktion aber auch innerhalb einer Befehlsfolge eines Execute(...) ausgeführt.
Beispiel einer Funktion in Bibliothek "Lib":
Sub Test()
Print "Zwei"
End Sub
"Normale" Benutzung:
Use "Lib"
Print "Eins"
Call Test()
Print "Drei"
Execute-Benutzung in einem komplett anderen Modul:
frml = {Use "Lib" : Print "Eins" : Call Test() : Print "Zwei"}
Execute(frml)
Ich hoffe, ich konnte ein wenig verständlich machen was ich meine. Nun gibt es in der Execute-Umgebung z. b. eine globale Variable curLog, also ein Protokollierungsobjekt, und die Funktion kann auf das globale Objekt zugreifen, z. B. Call curLog.Error("Fehlerausgabe").
Beispiel:
frml = { Print "Eins" : Call Test() : Call curLog.Error("Jetzt gibt es Fehler") : Print "Zwei" }
Execute(frml)
Das funktioniert auch einwandfrei. Meine Frage ist nun die: Kann ich auch innerhalb meiner Funktion Test(), die ja in einem ganz anderen Kontext programmiert ist, auf diese globale Variable zugreifen, wenn sie da ist? Wenn ich die Funktion normal aufrufe, dann fehlt diese Variable, weil sie nur im Kontext der Execute-Umgebung zur Verfügung steht. Was ich bräuchte, wäre also so ewas wie
If (IsAvailable(curLog)) Then Call curLog.Error("...")
Ist so etwas möglich? Oder hat jemand eine andere Idee?
Ich hoffe, ich konnte einigermaßen klar machen, was ich möchte - ist nicht ganz einfach zu erklären...
Im Voraus vielen Dank für Eure Antworten.
Gruß,
Joachim