Domino 9 und frühere Versionen > ND7: Entwicklung
Compiler-Probleme
ZaLudtske:
Hallo,
ich rufe aus einer LS Prozedur eine Funktion auf. Diese wird korrekt abgearbeitet und der Rückgabewert (vom Typ NotesDocument) wird auch korrekt zu gewiesen. Sobald aber zurück in die aufrufende Prozedur gesprungen wird, verliert die aufgerufene Funktion ihren Rückgabewert.
Hat jemand eine Idee, woran es liegen könnte?
Kennt jemand ein Workaround? Der Quellcode ist syntaktische und logisch korrekt.
Rainer
Tode:
benutz die Suche, das wurde in den letzten Wochen mindestens 3 mal diskutiert...
Tode
koehlerbv:
Als Beispiel hier ein Thread mit Link zur Antwort.
Bernhard
ZaLudtske:
Danke für die Hilfe.
Ich werde das nächste Mal außführlicher Suchen. Das Verhalten wundert mich trotzdem etwas. So etwas bin ich von anderen Sprachen (VB, VB.NET, C# ...) nicht gewöhnt. Dort wird ein Objekt erst dann gelöscht wenn die Referenz auf das Objekt gelöscht wird und nicht das Vater-Objekt.
Gibt es dieses Verhalten auch noch bei anderen Objekten?
Was mich wundert, ich habe eine ähnliche Prozedur bei der ich mit der PickListCollection arbeite. Dort überlebt das Document die Rückgabe an den Aufrufer.
Rainer
animate:
Das (ähnliche) Verhalten gibts bei der Beziehung NotesDocument <-> NotesItem (s. hier.
Ich persönlich finde das sehr undurchsichtig und ich habe auch noch keine Dokumentation gesehen, die das Verhalten beschreibt/erklärt.
Ungewöhnlich ist das Verhalten aber nicht, unabhängig von der Programmiersprache. Das Konstrukt nennt sich Komposition und ist eine Spezialform einer normalen Objektbeziehung (mehr darüber hier. Das ist also kein Feature von LotusScript, sondern liegt am Design der betroffenen Klassen. Hier bedeutet das, das Datenbank-Objekt wird zerstört weil der Scope, in dem es deklariert wurde, verlassen wird, das ist ja normal. Dadurch wird der Destruktor des Objekts aufgerufen und in dem werden jetzt diverse abhängige Objekte zerstört, unabhängig davon, ob noch von wo anders drauf verwiesen wird.
Das gleiche kann dir auch in VB, VB.NET, C# ... passieren. Hat nichts mit Garbage Collection zu tun.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln