Domino 9 und frühere Versionen > ND6: Entwicklung
Gültigkeit von Variablen
Werner Götz:
Hallo Marcus,
ich denke Du hast schon recht. Das Problem besteht aber wohl darin, dass Objekte im Parameter automatisch als "call by reference" betrachtet werden. Für solche Argumente wird also kein neuer Speicherplatz reserviert, sondern es wird die Variable genutzt, mit der die Routine aufgerufen wurde.
Dummerweise wird nun aber bei Dir nicht mit einer Variable (die dann Nothing als Wert haben könnte ... ) aufgerufen sondern direkt mit Nothing, es gibt also auch keinen Speicherplatz, an den das Ergebnis
Set docTmp = viewCheck.GetFirstDocument
geschrieben werden könnte.
Eigenlich sollte die Laufeitumgebung an dieser Stelle einen Fehler werfen!
-Werner
TRO:
Ich sehe das auch so, dass die harte Übergabe von Nothing als Parameter die Probleme verursacht.
Würde man in der übergeordneten Prozedur set doc = Nothing machen und dann dieses doc als Parameter übergeben, dann sollte alles wieder wie gewünscht funktionieren.
Thomas
koehlerbv:
Werner und Thomas (und "MadMetzger" Markus) - Ihr habt natürlich Recht. Solange das Objekt NotesDocument instantiiert wird (wie auch immer - durchaus auch als Abkömmling eines ganz anderen Objekts oder mit Set docCheck = Nothing) funktioniert die Zuweisung auch in der Sub.
Ich war da auf dem falschen Dampfer. Mea culpa.
Bernhard
BigWim:
Vielen Dank an Euch allen,
ich freue mich nicht nur, dass ich dass jetzt verstanden habe, sondern dass es mir auch gelungen ist, mich doch noch verständlich auszudrücken.
Markus
MadMetzger:
Werner, das würde ich so nicht ganz sehen. Für den Parameter wird mit Sicherheit doch Speicher reserviert. Und zwar muss die Laufzeitumgebung doch wissen, auf welchen Wert der Parameter zeigt. Ergo sollte zumindest Speicher für die Referenz reserviert und fix vergeben werden. Das heißt, ein einmal auf Nothing zeigender Funktionsparameter kann nicht mehr auf einen anderen Wert verlegt werden. Wobei das hier jetzt schon ins Detail geht. An der Moral von der Geschicht "Missbrauche Parameter als lokale Variablen nicht" ändert das eh nichts mehr.
Sehr schön, mal wieder was gelernt und die grauen Zellen angestrengt... ;D
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln