@Martin:
Ich habe in grauer Vorzeit mal gelernt, den fraglichen Code mit "Testdaten" im Kopf zu debuggen, also quasi Zeile für Zeile vor meinem geistigen Auge ablaufen zu lassen und zu sehen, was passiert.
Das ist in diesem Fall bei der Funktion recht einfach, weil es nur die Bedingung gibt: "Feld vorhanden, oder Feld nicht vorhanden".
Wenn die Funktion ein Array zurückliefern soll, dann muss es auch irgendwo gefüllt sein. Das ist insbesondere dann hilfreich, wenn ich nach dem Funktionsaufruf mit dem Rückgabewert irgend etwas machen will.
Wenn das Array aber nicht initialisiert wurde, dann kommt es zu dem Fehler.
Klar, ich kann jetzt hingehen und eine Datenbank erstellen in die ich die Funktion reinkopiere. Aber was soll das ?
Das löst in keiner Weise das eigentliche Problem.
Der Fehler ist lediglich das Sichtbare Ergebnis eines fehlers, der weit vor dem eigentlichen Funktionsaufruf aufgetreten ist.
Aufgrund eines weiteren PMR hatte ich ja dann auch die folgenden Informationen
Everytime adminp runs on the Domino server, the calendar profile of the
users mailfiles gets updated with three fields derived from the policie
set up on the server. These fields ($FL_2, $FL_3, $MPUP_N) gets deleted
from the $CalendarProfile when the user opens their mailfile.
Das ist ja schon mall was, womit man arbeiten kann. Eigentlich sollen die Felder ständig neu befüllt und nach Ausführung des Agenten wieder gelösht werden.
Problem bei mir war, daß aus welchem Grund auch immer das Feld $MPUP_N nicht aus dem CalendarProfile gelöscht wird. Das ist aber eine logische Konsequenz. Denn so, wie der Agent und die damit zusammenhängenden Funktionen gestrickt sind, wird der Code, der die Flags löscht, nie angesprungen.
Also tritt der Fehler immer und immer wieder auf.
Nachdem ich das Feld dann manuell gelöscht hatte, konnte ich prima beobachten, daß der Befehl tell admino process mailpolicy diese Feld wieder im CalendarProfile erstellt hat, nicht aber eines der Felder $FL_2 oder $FL3, was wiederum zur Folge hatte, daß das Array uninitialized blieb und der Fehler ins Log geschrieben wurde. Übrig blieb dann nur wieder das Feld $MPUP_N mit den bekannten Folgen.
Nun habe ich mir das entsprechende mailpolicy doc im DominoDirectory vorgenommen. Hier hatte ich lediglich einen Disclaimertext zu Testzwecken eingefügt; alle anderen Einstellungen habe ich so belassen, wie sie bei der Neuanlage aufgrund der Vorgabewerte in den Feldern erstellt werden.
Ich weiss auch, daß ich bei Erstellung des Docs den Disclaimertext mehrfach geändert habe und das Doc dadurch auch mehrfach gespeichert wurde. ( das nur am Rande )
Ich have dann einmal versuchsweise eines der Felder, die im Standard auf "Don't Change" stehen auf "Always" gesetzt und das Document gespeichert, ohne sonst an den übrigen Werten irgend etwas zu verändern.
Dann wieder tell adminp ... und CalProf VOR dem Öffnen der MailDatei mit ScanEZ angesehen. Siehe da, der AdminP hat das Feld $FL_2 erstellt und befüllt.
So wie der Agent programmiert ist, sollte niun alles sauber laufen. Und das tut es auch!
Die Felder $MPUP_N und $FL_2 werden gelöscht; ein Zeichen dafür, daß der Code bis ( fast ) zum Ende des Agenten sauber durchgelaufen ist. Ab dann lief der Agent bei jedem Start der Datenbank sauber durch.
@Domino770:
Würde mich aber jetzt doch einmall interessiern, warum der Client bei dir abstürzt. Da muss aber noch einiges mehr passieren, als ein nicht initialisiertes Array.